Android处理音频焦点变化事件

Android处理音频焦点变化事件

在《Android处理音频焦点AudioFocus》一文中,介绍了如何请求和释放音频焦点。

接下来是在神马笔记中的具体应用。

一、目标

处理音频焦点变化事件,防止多个音源同时播放。

二、实现过程

1. 请求音频焦点

在开始播放声音之前,需要考虑请求哪一种形式的音频焦点。

如果只是播放一段非常短的声音,比如酷狗音乐的启动音"Hello, kugo!",可以不用请求音频焦点。

因为时间很短并且不是特别重要的提示,因此可以不用请求音频焦点。

神马笔记中播放声音的几个位置。

位置 生命周期 是否循环 音频焦点
音乐笔记 Activity,Activity销毁时自动停止。 循环 AUDIOFOCUS_GAIN
语音笔记 可见时,界面不可见时自动停止。 单次 AUDIOFOCUS_GAIN_TRANSIENT
视频笔记 可见时,界面不可见时自动停止。 单次 AUDIOFOCUS_GAIN
录音 可见时,界面不可见时自动停止。 单次 AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE
录音回放 可见时,界面不可见时自动停止。 单次 AUDIOFOCUS_GAIN_TRANSIENT

录音时不允许有其他声音,因此使用AUDIOFOCUS_GAIN_TRANSIENT_EXCLUSIVE

2. 释放音频焦点

暂停及停止播放声音时,需要及时释放音频焦点。

3. 处理音频焦点变化

位置 GAIN LOSS LOSS_TRANSIENT TRANSIENT_CAN_DUCK
音乐笔记 继续 暂停 暂停 暂停
语音笔记 / 暂停 暂停 暂停
视频笔记
录音 / 停止 停止 停止
录音回放 / 暂停 暂停 暂停

TRANSIENT_CAN_DUCK虽然可以调低音量保持播放状态。

当前简化处理,与LOSS的处理方式保持一致,停止或者暂停。

三、开发过程回顾

正确地处理音频焦点变化事件可以很好的提供用户的听歌体验。

测试过程中发现酷我音乐酷狗音乐并未合适的处理音频焦点事件,体验确实糟糕。

从选择音乐文件添加到笔记中并实现音乐笔记的界面,

接着实现了调用第三方应用播放音乐,

然后是笔记内播放音乐,笔记内播放音乐时会停止视频播放和其他音乐笔记及暂停语音笔记。

最后处理了音频焦点事件,提升了用户听音乐的体验。

中间还有一个小插曲,转换了网易云音乐的NCM格式文件。

四、接下来

发布神马笔记 版本2.9.0——音乐笔记。

五、Finally

何以故。 是诸众生。 若心取相。即为着我人众生寿者。 若取法相。即着我人众生寿者。