安卓:在prepared的MediaPlayer不会被调用 [英] Android: MediaPlayer onPrepared is not being called
问题描述
作为标题所说,上prepared()方法覆盖不被调用。
的MediaPlayer =新的MediaPlayer();
mediaPlayer.setOn preparedListener(新在preparedListener(){
@覆盖
在prepared(MediaPlayer的MP)公共无效{
如果(mp.equals(媒体播放器))isReady_mediaPlayer = TRUE; Log.e(I,媒体播放器已经被加载到内存中!);
}
});媒体播放器= MediaPlayer.create(这一点,R.raw.my_sound_mp3);
这是因为你正在创建一个新的的MediaPlayer
对象。这其中没有任何上preparededListener
设置就可以了。
在这里,您创建和分配的MediaPlayer
对象:
的MediaPlayer =新的MediaPlayer();
接下来,您设置上preparedListener
就可以了。
但是当你创建并分配一个新的!这种分配会覆盖您的previous线。
MEDIAPLAYER = MediaPlayer.create(这一点,R.raw.my_sound_mp3);
这其中有没有上preparedListener
设置就可以了。
要解决,不要使用创建
方法,使用的setDataSource
而不是
AssetFileDescriptor AFD = context.getResources()openRawResourceFd(R.raw.my_sound_mp3)。
的MediaPlayer媒体播放器=新的MediaPlayer();
mediaPlayer.setOn preparedListener(新在preparedListener(){
@覆盖
在prepared(MediaPlayer的MP)公共无效{
如果(mp.equals(媒体播放器))isReady_mediaPlayer = TRUE;
Log.e(I,媒体播放器已经被加载到内存中!);
}
});
mediaPlayer.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
afd.close();
媒体播放器prepare()。
As title says, the onPrepared() overridden method is not being called.
mediaPlayer = new MediaPlayer();
mediaPlayer.setOnPreparedListener(new OnPreparedListener(){
@Override
public void onPrepared(MediaPlayer mp){
if (mp.equals(mediaPlayer)) isReady_mediaPlayer = true;
Log.e("I", "Media player has been loaded to memory !");
}
});
mediaPlayer = MediaPlayer.create(this, R.raw.my_sound_mp3);
It's because you are creating a new MediaPlayer
object. This one does not have any onPreparededListener
set on it.
Here you create and assign a MediaPlayer
object:
mediaPlayer = new MediaPlayer();
Next you set an onPreparedListener
on it.
But then you create and assign a new one! This assignment overrides your previous lines.
mediaPlayer = MediaPlayer.create(this, R.raw.my_sound_mp3);
This one has no onPreparedListener
set on it.
To fix, don't use the create
method, use setDataSource
instead
AssetFileDescriptor afd = context.getResources().openRawResourceFd(R.raw.my_sound_mp3);
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setOnPreparedListener(new OnPreparedListener(){
@Override
public void onPrepared(MediaPlayer mp){
if (mp.equals(mediaPlayer)) isReady_mediaPlayer = true;
Log.e("I", "Media player has been loaded to memory !");
}
});
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
afd.close();
mediaPlayer.prepare();
这篇关于安卓:在prepared的MediaPlayer不会被调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!