4

タイトルが示すように、onPrepared() オーバーライドされたメソッドは呼び出されていません。

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);
4

1 に答える 1

7

これは、新しい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();
于 2013-07-27T07:14:37.923 に答える