Android 音频管理器AudioManager

来源:互联网 发布:防火墙拦截udp端口 编辑:程序博客网 时间:2024/04/30 09:06

音频管理器AudioManager,通过它可以管理android系统的音量或直接让系统静音,依旧是通过调用getSystemService()方法获取音频管理器AudioManager对象,获取到该对象之后就可以调用它相应的方法来管理系统的音频,首先先热热身,大致了解一下AudioFocus,为什么先说这个呢?因为今天在项目中碰到了这个问题,问题情境描述:手机首先开启一个音乐进入后台播放,然后进入闹钟模块,设置一个闹钟,并为闹钟选择一个铃音,当闹钟时间到时弹出闹钟响应界面同时播放铃声并振动,并要求后台音乐同时暂停播放,等待闹钟铃音响应结束之后,后台音乐又自动重新进入播放状态,描述完毕。

以上情境涉及到两个问题:

1.闹钟时间到并启动响应界面,如何暂停后台正在播放的音乐,并播放闹钟的铃音?

2.闹钟铃音响应结束之后,如何让后台暂停的音乐重新恢复播放状态?

解决以上两个问题的关键就是AudioManager对象的AudioFocus这个音频焦点,首先分析以上问题的第一步:

暂停后台正在播放的音乐并启动播放闹钟的铃音,首先就需要在闹钟模块中通过AudioManager的requestAudioFocus()方法获取到音频焦点(AudioFocus),获取到音频焦点(AudioFocus)之后,后台音乐就自动进入暂停状态【另一种情况是闹钟铃音和后台同时播放,那么此时可以不对焦点进行操作,只不过此时就听到两种声音,当然在实际情况中就不应该这么做了,用户体验是很重要的,两个应用同时播放声音,那么听起来就很混乱,这是很糟糕的,不过另外一点,如果闹钟铃音设置为静音,那么用户可能希望即使闹钟启动了也并不想中断后台音乐,此时就可以不对音频焦点进行处理,后台音乐就不会暂停】。

再分析以上问题的第二步:

闹钟铃音响应结束之后,后台暂停的音乐重新恢复播放状态,此时只需要调用abandonAudioFocus()方法释放音频焦点(AudioFocus)就可以了,请求音频焦点requestAudioFocus()和释放音频焦点abandonAudioFocus()方法的参数涉及到了AudioManager.OnAudioFocusChangeListener这个监听器,此处可以先放一下,后面将会结合一个例子进行详细说明的,本次想说的就是这个AudioFocus,因为它很重要,后期会结合实例说明一下,好了今天就到这了,该洗洗睡了!!

 

 

 

 

 

 

 

原创粉丝点击