通知音を鳴らしたいのですが、一度だけ鳴らなければならないのに、音が永遠にループするという問題があります。
私は2つの方法を試しました:
notification.sound = Uri.parse("content://media/internal/audio/media/38");
と
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
mMediaPlayer.setDataSource(this, Uri.parse("content://media/internal/audio/media/38"));
mMediaPlayer.setLooping(false);
mMediaPlayer.prepare();
mMediaPlayer.setOnPreparedListener(new OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
Log.v(Utils.TAG, "onprepared");
mp.start();
}
});
mMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
Log.v(Utils.TAG, "end, we should release");
mp.stop();
mp.release();
}
});
2 番目のケースでは、「終了、解放する必要があります」というトレースが表示されず、オーディオが何度も何度も再生されます。
何か案が?
どうもありがとうございました
アップデート:
私は2つのデバイスを試しました:
- ICS 4.0.4を搭載したGalaxy Nexusで永遠にループします
- HTC Hero 2.2.1で正常に動作します