電話が鳴ったときにメディア プレーヤーを一時停止しようとしています。Android サイトのサンプル コードを使用します。こんな感じです;
public void onAudioFocusChange(int focusChange) {
switch (focusChange) {
case AudioManager.AUDIOFOCUS_GAIN:
// resume playback
if (mMediaPlayer != null && !mMediaPlayer.isPlaying()) {
mMediaPlayer.start();
mMediaPlayer.setVolume(1.0f, 1.0f);
}
break;
case AudioManager.AUDIOFOCUS_LOSS:
// Lost focus for an unbounded amount of time: stop playback and
// release media player
stopMediaPlayer();
break;
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
// Lost focus for a short time, but we have to stop
// playback. We don't release the media player because playback
// is likely to resume
if (mMediaPlayer.isPlaying())
mMediaPlayer.pause();
break;
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
// Lost focus for a short time, but it's ok to keep playing
// at an attenuated level
if (mMediaPlayer.isPlaying())
mMediaPlayer.setVolume(0.1f, 0.1f);
break;
}
}
電話が鳴ると AUDIOFOCUS_LOSS_TRANSIENT が送信されます。これは問題ありません。通話が終了すると、 AUDIOFOCUS_GAIN が送信され、プレイヤーはプレイを続けます。これもOKです。しかし、AUDIOFOCUS_GAIN を送信した直後に AUDIOFOCUS_LOSS が送信されます。オーディオのフォーカスが失われている理由はありますか? 事前にThx。