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

标签: AndroidDevelopersAudio OutputHardware
1729人阅读 评论(0) 收藏 举报
分类:

用户用很多选择,当它开始享受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); 
} 

新技术,新未来!欢迎大家关注“1024工场”微信服务号,时刻关注我们的最新的技术讯息!(甭客气!尽情的扫描或者长按!)

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:963759次
    • 积分:12708
    • 等级:
    • 排名:第1073名
    • 原创:203篇
    • 转载:0篇
    • 译文:61篇
    • 评论:282条
    微信服务号
    最新技术资讯,最精技术文章,欢迎关注!
    博客专栏
    最新评论