Android开发中audio focus的处理
来源:互联网 发布:零基础java就业班 编辑:程序博客网 时间:2024/05/18 00:39
Android从2008年推出至今已有4年多,我最近才上手了android开发,我已经属于了开发者中的小弟了,有很多前辈在这系统上做了很多深入的开发和研究。http://developer.android.com 作为Android开发官网,上面有比较详细的介绍,可惜是英文的,我辈还是需要花点力气去读读的,上面将media & camera分成了5个部分,
- Media playback
- Supported Media Formats
- Audio Capture
- JetPlayer
- Camera
这次我先分享下Media Playback的中一些内容以及我学习中的感悟。
首先需要我们接触到的最主要的两个类分别是MediaPlayer、MediaManager。MediaPlayer是用来控制音频/视频流或者文件的播放的,需要我们注意的是MediaPlayer对象加上其支持的一些播放操作会形成一个状态机,在不合适的状态调用不合适的函数就会抛出异常,如果开发者不清楚自己创建的MediaPlayer对象当前处于哪个状态,就很有可能调用错误的方法造成程序的异常,而且这些错误很难被察觉,所以错误处理在这个部分就显得尤为重要。
下面要说的就是Audio Focus,举个例子,当你在听歌的时候,突然来了一条短信,如果不加处理,短信的声音很可能被音乐的声音湮没,你就会察觉不到。我们希望发生什么事情呢?我们希望这个时候音乐的声音较之前稍微降低些使得我们能够听到短信提示音,在短信提示音结束后音乐的声音再次回到正常。这个过程就是获取和释放audio focus的过程。
申请audio focus
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);int result = audioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
处理focus change事件
class MyService extends Service implements AudioManager.OnAudioFocusChangeListener { // .... public void onAudioFocusChange(int focusChange) { // Do something based on focus change... }}在写代码的时候,我忽略了一点:Audio Focus is cooperative in nature.
申请audio focus和处理focus change一定是互相配合实现的,我一开始写了个service用来播放音乐,在start函数调用前并没有申请audio focus,但是我实现了onAudioFocusChange函数。我期待这个service在focus change时停止播放,但是我发现,当另外一个service申请到audio focus时,之前的service不会出现音乐停止播放的情况。
后来想了下,实际上这是很正常的。如果我的service在播放音乐之前没有去申请获得audio focus,那么之后audio focus被别的程序修改了,那么service中对于audio focus变化的处理实际上是不会得到执行的。如果要使得处理focus change的事件能够得到执行,首先我得确保service开始就申请了audio focus。
- Android开发中audio focus的处理
- Android开发之Audio播放:竞争Audio之Audio Focus的应用
- android中view的focus焦点处理
- android中view的focus焦点处理
- Android Audio Focus的应用(requestAudioFocus)
- Android Audio Focus的应用(requestAudioFocus)
- Android Audio Focus的应用(requestAudioFocus)
- Android Audio Focus的应用(requestAudioFocus)
- 详细了解android中view的focus焦点处理
- Android中的Audio播放:竞争Audio之Audio Focus的应用
- Android中的Audio播放:竞争Audio之Audio Focus的应用
- Android中的Audio播放:竞争Audio之Audio Focus的应用
- Android中的Audio播放:竞争Audio之Audio Focus的应用
- Android中的Audio播放:竞争Audio之Audio Focus的应用
- Android中的Audio播放:竞争Audio之Audio Focus的应用
- Android中的Audio播放:竞争Audio之Audio Focus的应用
- Android中的Audio播放:竞争Audio之Audio Focus的应用
- Android中的Audio播放:竞争Audio之Audio Focus的应用
- 列出所有子集-----字典顺序 2013年1月14日
- 让你的vim新建源文件的时候智能添加注释和代码
- gnuplot 入门教程 1
- VIM 查找与替换
- Bloom Filter概念和原理
- Android开发中audio focus的处理
- 开始OPENGL了.
- 9个offer,12家公司,35场面试,从微软到谷歌,应届计算机毕业生的2012求职之路
- EXTJS4.x之ToolBar的使用
- hdu1012
- [Hadoop] Hadoop开启调试模式
- iframe导致浏览器内存溢出的解决方法
- HDU 2037 今年暑假不AC (贪心)
- 数组的顺序表实现