标签:
用户在使用他们的android设备进行多媒体交互的时候通常有多种选择,大多数的设备有一个内置的话筒,有线耳机的插孔,还有一些会提供对于蓝牙设备的支持以及A2DP的支持等等。
你的app应该受正在使用的音频播放设备的影响从而做出合理的响应。
下面的代码片段展示出,你可以请求 AudioManager来检查音频播放是否正被系统导向到设备的喇叭,有线耳机或者是蓝牙设备。
1 2 if(isBluetoothA2dpOn()){ 3 // Adjust output for Bluetooth. 4 }elseif(isSpeakerphoneOn()){ 5 // Adjust output for Speakerphone. 6 }elseif(isWiredHeadsetOn()){ 7 // Adjust output for headsets 8 }else{ 9 // If audio plays and noone can hear it, is it still playing? 10 }
响应音频输出硬件的变化
当断开耳机、蓝牙耳机的连接,audio steam就会自动地被系统导向到喇叭播放,如果你使用耳机时通常习惯使用较大的音量,那么在拨出耳机之后往往会非常吵闹。
Android系统会发出一条 ACTION_AUDIO_BECOMING_NOISY 的广播,当上述的情况发生时。最好在你的activity中注册一个 BroadcastReceiver无论你是否在播放音频的时候都监听这个intent。在播放音乐的时候,用户往往会希望在耳机抽出时暂停播放,或者是在游戏的时候调低游戏的音量。
1 2 privateclassNoisyAudioStreamReceiverextendsBroadcastReceiver{ 3 @Override 4 publicvoid onReceive(Context context,Intent intent){ 5 if(AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intent.getAction())){ 6 // Pause the playback 7 } 8 } 9 } 10 11 privateIntentFilter intentFilter =newIntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY); 12 13 privatevoid startPlayback(){ 14 registerReceiver(myNoisyAudioStreamReceiver(), intentFilter); 15 } 16 17 privatevoid stopPlayback(){ 18 unregisterReceiver(myNoisyAudioStreamReceiver); 19 }
3-响应音频输出的硬件(Managing Audio Playback)
标签:
原文地址:http://www.cnblogs.com/xlk0101/p/5100272.html