设为首页 加入收藏

TOP

Android中的Audio播放:控制Audio输出通道切换
2014-11-24 13:15:15 来源: 作者: 【 】 浏览:0
Tags:Android Audio 播放 控制 输出 通道 切换

Audio 输出通道有很多,Speaker、headset、bluetooth A2DP等。通话或播放音乐等使用Audio输出过程中,可能发生Audio输出通道的切换。比如,插入有线耳机播放音乐时,声音是从耳机发出的;而此时拔出耳机,Audio输出通道会发生切换。如果音乐播放器不做处理,Audio输出是被切换到扬声器的,声音直接从Speaker发出。我们在编写程序时,要捕获并按照需求来处理这样的事,本文就是讲解如何处理的。


AudioNoisy AudioManager




一、Audio输出状态查询与控制


android.media.AudioManager提供的下列方法可以用来查询当前Audio输出的状态:




另外还有一些设置这些Audio输出的setXYZ()方法,这些方法在一般使用Audio输出的应用程序不要直接调用,他们由系统来管理,实现Audio输出通道的自动切换。除非,界面提供给用户切换的菜单或按钮,而用户选择了却换,比如要直接选择扬声器发声,可直接调用setSpeakerphoneOn()。


二、Audio输出通道切换的事件的捕获与处理


因为耳机插拔、蓝牙耳机的断开,Audio输出通路会自动切换。此时正在播放Audio的程序要获得通知,知道这一事件的发生。Android中是通过广播ACTION_AUDIO_BECOMING_NOISY这个Intent通知的。


处理广播的较好的方式,是动态注册/注销自己所关心的广播。下面代码演示了,开始播放时注册广播的Receiver;停止播放时注销广播的Receiver。对Audio输出通道切换的处理是暂停当前的播放,不直接从新的通道里发出声来。


三、Audio输出通道切换的典型场景—— 用耳机听音乐时,拔出耳机


听耳机听音乐时,耳机别拔出的时序图如下:


AudioNoisy_Sequence.jpg


图中:





小结


Audio 输出通道切换时,要根据具体需求来做相应的处理。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++ string 字符串的下标和子串函.. 下一篇Android中的Audio播放:竞争Audio..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: