安卓音频焦点切换总结及案例

安卓音频焦点切换总结及案例

ID:37717465

大小:30.33 KB

页数:5页

时间:2019-05-29

安卓音频焦点切换总结及案例_第1页
安卓音频焦点切换总结及案例_第2页
安卓音频焦点切换总结及案例_第3页
安卓音频焦点切换总结及案例_第4页
安卓音频焦点切换总结及案例_第5页
资源描述:

《安卓音频焦点切换总结及案例》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、安卓音频焦点问题及案例因为系统中可能会有多个应用程序会播放音频,所以需要考虑他们之间该如何交互,为了避免多个应用程序同时播放音乐,Android系统使用音频焦点来进行统一管理,即只有获得了音频焦点的应用程序才可以播放音乐。 应用程序在开始播放音频文件前,首先应该请求获得音频焦点,并且应该同时注册监听音频焦点的丢失通知,即如果音频焦点被系统或其他的应用程序抢占时,应用程序可以做出合适的响应。 正确对于音频的播放流程如下:1 获取音频焦点 requestAudioFocus2取成功后,开始播放音频 3处理音频焦点的

2、丢失和“DUCK”4播放完毕后取消焦点1.获取音频焦点 当应用程序在开始播放任何音频之前,首先应该持有流的音频焦点。 可以通过调用requestAudioFocus() 来实现,如果返回AUDIOFOCUS_REQUEST_GRANTED则表示请求成功。 必须指定流类型(使用的是哪一个流)和音频焦点的类型(短暂的或是持久的)。 瞬态焦点用来播放很短时间的音频(例如,播放导航指令)。持久焦点用来播放较长一段时间的音频(例如,播放音乐)。 下面的代码片断演示了请求音乐音频流的永久音频焦点。 例如当用户按下播放背景音

3、乐的按键,您应该立即请求音频焦点,当成功获得了焦点后再开始播放音乐。 AudioManager am = mContext.getSystemService(Context.AUDIO_SERVICE);   1....   2.   1.// Request audio focus for playback   2.int result = am.requestAudioFocus(afChangeListener,   3.// Use the music stream.   4.AudioManager.

4、STREAM_MUSIC,   5.// Request permanent focus.   6.AudioManager.AUDIOFOCUS_GAIN);   7.   8.if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {   9.    am.unregisterMediaButtonEventReceiver(RemoteControlReceiver);   10.    // Start playback.   11.    // 开

5、始播放音乐文件   12.}   如果应用程序完成了播放,请记着要调用abandonAudioFocus()方法来通知系统释放音频焦点,同时注销相关的AudioManager.OnAudioFocusChangeListener。这样当应用程序释放了音频焦点,则系统会允许其他被中断的应用程序重新获取该焦点来继续播放。 Java代码 1.// Abandon audio focus when playback complete   2.   am.abandonAudioFocus(afChangeListene

6、r);   当请求瞬态音频焦点时有一个附加参数可供设置,即是否允许“DUCK”。通常当应用程序失去了音频焦点时应该停止播放。如果获取短暂音频焦点的时候设置了”DUCK”附加参数,则允许其他的应用程序继续播放,不需要停止,只要降低音量就可以了,然后直到您的应用程序释放了焦点,其他应用程序再重新获得的时候,将音量还原到有一开始的状态。 // Request audio focus for playback   1.  int result = am.requestAudioFocus(afChangeListene

7、r,   2.  // Use the music stream.   3.  AudioManager.STREAM_MUSIC,   4.  // Request permanent focus.   5.  AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);   6.     7.  if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {   8.    // Start playback.   9.

8、  }   “DUCK”特别适合那种间歇性播放音频流的应用程序,如驾驶导航的声音提示。 每当其他的应用程序请求获得音频焦点(永久性的,短暂的,短暂并且支持DUCK的)的时候,您应用程序中注册的音频焦点监听器都会收到相应的消息通知。 1.处理音频焦点的丢失 如果此应用程序可以请求音频焦点,那么当其他应用程序申请的时候,此应用程序也可能会丢失音频焦点。怎么样应对音频焦点丢失的情况则取决于音

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。