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

更多相关文章

  1. android 非系统APP访问字符设备
  2. Android(安卓)查看SharedPreferences中的数据
  3. 【Android(安卓)Developers Training】 51. 序言:打印内容
  4. android 布局 px or dip
  5. Audio and Video
  6. adb devices List of devices attached 为空
  7. 如何在Android(安卓)Studio和eclipse中查看File Explorer视图(设
  8. Android(安卓)上层应用读写设备节点
  9. Android中自动朗读(TTS)的简单使用

随机推荐

  1. 强烈推荐Android新手的入门学习策略之一,A
  2. Android下添加新的自定义键值和按键处理
  3. Android输入框限制字符长度,字母自动大写
  4. Android体系框架
  5. Android KitKat 4.4 Wifi移植AP模式和网
  6. [Android]判断是否是华为EMUI系统
  7. android访问网络,下载图片,并设置UI
  8. Android 高级UI解密 (三) :Canvas裁剪 与
  9. Android中隐藏标题栏和状态栏(电源,信号,时
  10. android studio 使用NDK和swig编译c++示