Audio輸出通道切換的事件的捕獲與處理
因為耳機插拔、藍牙耳機的斷開,Audio輸出通路會自動切換。此時正在播放Audio的程式要獲得通知,知道這一事件的發生。Android中是通過廣播ACTION_AUDIO_BECOMING_NOISY這個Intent通知的。
處理廣播的較好的方式,是動态注冊/登出自己所關心的廣播。下面代碼示範了,開始播放時注冊廣播的Receiver;停止播放時登出廣播的Receiver。對Audio輸出通道切換的處理是暫停目前的播放,不直接從新的通道裡發出聲來。
[java]
view plain
copy
- private class NoisyAudioStreamReceiver extends BroadcastReceiver {
- @Override
- public void onReceive(Context context, Intent intent) {
- if (AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intent.getAction())) {
- // Pause the playback
- }
- }
- }
- private IntentFilter intentFilter = new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY);
- private void startPlayback() {
- registerReceiver(myNoisyAudioStreamReceiver(), intentFilter);
- }
- private void stopPlayback() {
- unregisterReceiver(myNoisyAudioStreamReceiver);
- }