Android Developers:处理音频输出的硬件

用户用很多选择,当它开始享受Android设备中的音频的时候。许多设备有一个内嵌扬声器,有线耳机的耳机插孔,和一些蓝牙连接和支持A2DP音频。 

 

检查什么设备正在被使用 

———————————————————————————————————————————————————————————————— 

你的应用程序的行为如何被哪个硬件输入被使用影响 

 

你能查询AudioManager类确定音频是否被正确的路由到设备的扬声器,有线耳机,或者连接的蓝牙设备。如下面的代码块所示 

if (isBluetoothA2dpOn()) { 
   // Adjust output for Bluetooth. 
} else if (isSpeakerphoneOn()) { 
   // Adjust output for Speakerphone. 
} else if (isWiredHeadsetOn()) { 
   // Adjust output for headsets 
} else {  
   // If audio plays and noone can hear it, is it still playing? 
} 

处理音频输出硬件的改变  

—————————————————————————————————————————————————————————————————
当一个耳机被断开,或者一个蓝牙设备失去连接,音频流自动路由到内置的扬声器。如果你听音乐在在能做到的最大的声音,那肯定是一个嘈杂的惊喜。 

 

幸运的是当这个种情况发生的时候,系统广播一个ACTION_AUDIO_BECOMING_NOISY意图。无论你什么时候播放音频,注册一个BroadcastReceiver来监听这个意图是一个好的实践。在播放音乐的情况下,用户通常期望播放被暂停—然而对于游戏你可能会选降低音量 

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); 
} 

你可能感兴趣的:(android,hardware,audio,output,developers)