天天看點

Audio輸出通道切換的事件的捕獲與處理

Audio輸出通道切換的事件的捕獲與處理

因為耳機插拔、藍牙耳機的斷開,Audio輸出通路會自動切換。此時正在播放Audio的程式要獲得通知,知道這一事件的發生。Android中是通過廣播ACTION_AUDIO_BECOMING_NOISY這個Intent通知的。

處理廣播的較好的方式,是動态注冊/登出自己所關心的廣播。下面代碼示範了,開始播放時注冊廣播的Receiver;停止播放時登出廣播的Receiver。對Audio輸出通道切換的處理是暫停目前的播放,不直接從新的通道裡發出聲來。

[java] 
     view plain
     copy
     
    
   
           
  1. private class NoisyAudioStreamReceiver extends BroadcastReceiver {  
  2.     @Override  
  3.     public void onReceive(Context context, Intent intent) {  
  4.         if (AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intent.getAction())) {  
  5.             // Pause the playback  
  6.         }  
  7.     }  
  8. }  
  9. private IntentFilter intentFilter = new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY);  
  10. private void startPlayback() {  
  11.     registerReceiver(myNoisyAudioStreamReceiver(), intentFilter);  
  12. }  
  13. private void stopPlayback() {  
  14.     unregisterReceiver(myNoisyAudioStreamReceiver);  
  15. }