这是因为您正在创建一个新MediaPlayer
对象。这个没有任何onPreparededListener
设置。
在这里,您创建并分配一个MediaPlayer
对象:
mediaPlayer = new MediaPlayer();
接下来你onPreparedListener
在它上面设置一个。
但是随后您创建并分配了一个新的!此分配会覆盖您之前的行。
mediaPlayer = MediaPlayer.create(this, R.raw.my_sound_mp3);
这个没有onPreparedListener
设置。
要修复,不要使用该create
方法,setDataSource
而是使用
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();