Android音乐编程的管理音频硬件

移动开发 Android
Android 系统通常支持多种音频设备,常见的有手机内置扬声器,插孔式有线耳机,蓝牙 A2DP(蓝牙立体声音频传输规范(A2DP))设备。

获取当前正在播放音频的硬件信息

使用不同的硬件设备可能会影响您应用程序的设计方式,您可以通过 AudioManager 来查询当前正在播放音频的硬件设备信息,是内置扬声器,还是有线耳机,或者是蓝牙设备。

示例代码如下:

  1. if (isBluetoothA2dpOn()) { 
  2.    // Adjust output for Bluetooth. 蓝牙设备 
  3. else if (isSpeakerphoneOn()) { 
  4.    // Adjust output for Speakerphone. 内置扬声器(免提) 
  5. else if (isWiredHeadsetOn()) { 
  6.    // Adjust output for headsets 有线耳机 
  7. else { 
  8.    // If audio plays and noone can hear it, is it still playing? 未知设备 

 

处理音频播放硬件的状态变化

当耳机线脱落,蓝牙设备断开,音频输出流会自动切换到内置扬声器。如果此时您正在大声播放音乐,这可能不是您期待的结果。
不过也不用担心,当出现硬件设备切换的时候,Android 会发送系统广播 ACTION_AUDIO_BECOMING_NOISY ,您的应用程序中应该注册一个 BroadcastReceiver 来监听这个消息,当出现这种情况的时候,如果正在听音乐,较好的设计方案是暂停当前音乐的播放,如果正在玩游戏,那么尽量降低游戏的音量是个不错的解决方法。

示例代码如下:

  1. private class NoisyAudioStreamReceiver extends BroadcastReceiver { 
  2.   @Override 
  3.   public void onReceive(Context context, Intent intent) { 
  4.     if (AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intent.getAction())) { 
  5.        // Pause the playback 
  6.     } 
  7.   } 
  8.  
  9. private IntentFilter intentFilter = new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY); 
  10.  
  11. private void startPlayback() { 
  12.    registerReceiver(myNoisyAudioStreamReceiver(), intentFilter); 
  13.  
  14. private void stopPlayback() { 
  15.    unregisterReceiver(myNoisyAudioStreamReceiver); 

参考文摘:
http://developer.android.com/training/managing-audio/audio-output.html

责任编辑:佚名 来源: 润物无声的博客
相关推荐

2011-12-23 10:17:25

Android音乐编程管理音频焦点

2013-09-29 09:49:04

编程生活方式

2011-12-23 10:25:11

Android音乐编程控制音量

2018-03-09 11:25:09

微信

2018-01-18 10:36:05

微信

2023-11-28 12:04:06

AI人工智能

2015-06-16 10:27:13

iOSAndroid音频

2016-04-21 09:43:33

编程音乐

2018-01-16 17:53:44

微信

2019-11-18 09:04:16

metaflac音乐标签开源

2009-02-17 16:20:02

Linux磁盘挂载硬件管理

2012-03-14 09:49:52

Android音乐键盘可触摸

2023-02-03 17:28:44

HIDLAndroid硬件

2023-11-21 14:48:11

2020-09-30 20:54:43

RT-ThreadFinSH编程

2018-01-18 22:35:31

微信

2010-03-17 13:18:31

Linux系统
点赞
收藏

51CTO技术栈公众号