Android音频焦点详解(上)
来源:互联网 发布:视频会议软件好? 编辑:程序博客网 时间:2024/05/16 07:53
一 焦点在Android应用中的作用
我们的手机里经常会安装一些媒体类的应用,例如网易云音乐,QQ音乐,爱奇艺视频,优酷视频等等,你有没有想过,当我们听QQ音乐的歌曲时,切换到网易云音乐播放歌曲,或者打开爱奇艺观看视频时,QQ音乐播放的歌曲就会暂停,这是为什么呢?又是如何实现的呢?如果不暂停会是什么效果呢?
以上这些疑问都可以用音频焦点来解释,在下面的内容中你将找到答案。
二 焦点讲解
众所周知Android是一个开放的系统,为了协调各媒体应用之间的关系,Android增加了音频焦点管理机制,各应用开发者应尽量遵循该机制进行开发。
我们通过一个例子来讲解Android的焦点机制。
新建一个Activity,在其中增加一个播放暂停按钮,来控制音乐播放。
看一下部分关键代码,全部代码在文末会给出
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
涉及到的MediaPlayer播放音乐流程请自行查询相关文档,不在本文介绍范围
我们重点看一下第2步 申请焦点
通过AudioManager对象调用requestAudioFocus方法,有三个参数
OnAudioFocusChangeListener l,int streamType,int durationHint
1 焦点变化的监听器
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
2 streamType音源类型,在AudioManager中定义
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
3 durationHint 获得焦点的时间长短
在AudioManager中定义了四种类型
AUDIOFOCUS_GAIN //长时间获得焦点
AUDIOFOCUS_GAIN_TRANSIENT //短暂性获得焦点,用完应立即释放
AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK //短暂性获得焦点并降音,可混音播放
AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE //短暂性获得焦点,录音或者语音识别
我们可根据自己的应用的使用场景来合理的配置每个参数,并在焦点变化监听器来做相应的处理。
调试代码已上传github,欢迎访问
- Android音频焦点详解(上)
- Android音频焦点详解(上)
- Android音频焦点详解(下)——源码详解
- Android音频焦点详解(下)——源码详解
- Android音频焦点
- Android---管理音频焦点
- Android 获取音频焦点
- Android---管理音频焦点
- Android 音频焦点
- Android音频焦点
- Android音频焦点
- android音频焦点
- Android 音频焦点(Audio Focus)
- Android 音频焦点(Audio Focus)
- Android 音频焦点(Audio Focus)
- Android 处理音频焦点 AudioFocus
- Android 处理音频焦点 AudioFocus
- Android音频焦点AudioFocus使用
- Linux+.NetCore+Nginx搭建集群
- 第四十四篇:Java 7新特性:自动化资源管理
- 一个二元二次有理式最值问题
- JavaScript数据类型
- *.exe exited with code 3
- Android音频焦点详解(上)
- Mysql中的排序规则utf8_unicode_ci、utf8_general_ci的区别总结
- 如何停止/重启/启动redis服务
- Map集合的四种遍历方式
- java设计模式
- 转换为字符串时,toString() 与 +"" 的区别
- Retrofit2+RxJava2进行网络请求
- ci框架中的图片上传
- 18:等差数列末项计算