开始
在上面分发流程分析中,最终是在MediaFocusControl中进行处理的,在requestAudioFocus方法中可以看到在执行焦点栈逻辑时会先执行AudioPolicy相关逻辑,

因此我们试一试可不可以利用这一点,来注册外部的AudioPolicy,进行焦点变化监听。幸运的是可以,并且AudioManager中提供了registerAudioPolicy方法,
可以通过反射来实现。
示例代码
github地址:欢迎star或者fork
private val audioPolicy by lazy {
val builder = AudioPolicy.Builder(context)
.setIsAudioFocusPolicy(false)
builder.setAudioPolicyFocusListener(object :
AudioPolicy.AudioPolicyFocusListener() {
override fun onAudioFocusGrant(
afi: AudioFocusInfo?,
requestResult: Int
) {

文章介绍了如何通过注册自定义的AudioPolicy并使用反射调用AudioManager的registerAudioPolicy方法,来监听和处理Android系统的音频焦点变化事件。提供了示例代码展示如何实现AudioPolicyFocusListener接口,并在音频焦点发生变化时进行相应的回调操作。
最低0.47元/天 解锁文章
2540

被折叠的 条评论
为什么被折叠?



