我正在使用MediaPlayer類播放音頻。我有一個要求,當用戶在設備上播放其他一些歌曲時,應用程序播放的音頻應該會自動停止。如何獲得通知,其他音頻已經開始在我的應用程序的設備上播放?請指教。其他音頻開始在設備上播放時停止我的音頻
更新:
我試過這個代碼,它的工作原理是第一次。即,當我啓動我的應用程序並在我的應用程序中播放音頻時,我的應用程序正在播放音頻。然後,當我打開某個音樂播放器並在其中播放其他音頻時,我的應用會在「AUDIOFOCUS_LOSS」中檢測到通知。我在這裏停止我的音頻。然後,當我的應用程序再次播放音頻,然後回到音樂播放器並在那裏播放其他音頻時,這次我的應用程序無法檢測到此通知,因此我無法再停止我的音頻。這是我現在的問題。
有人可以幫我解決這個問題嗎?
public class MyActivity extends ActionBarActivity implements OnCompletionListener, OnPreparedListener, OnErrorListener, OnBufferingUpdateListener, AudioManager.OnAudioFocusChangeListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hclsquad_fm);
audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
audioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
}
@Override
public void onAudioFocusChange(int focusChange) {
switch (focusChange) {
case AudioManager.AUDIOFOCUS_GAIN:
Toast.makeText(MyActivity.this, "Focus GAINED", Toast.LENGTH_LONG).show();
break;
case AudioManager.AUDIOFOCUS_LOSS:
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT:
Toast.makeText(MyActivity.this, "Focus LOSS", Toast.LENGTH_LONG).show();
if(mediaPlayer != null)
killMediaPlayer();
break;
case AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK:
Toast.makeText(MyActivity.this, "Focus LOSS TRANSIENT", Toast.LENGTH_LONG).show();
break;
default:
}
}
請在我的問題中查看我更新的評論 – Stella