android10 高通平台进入FM后再退出耳机按键不能接听电话的问题修改 2021-01-21

FM 模块实现耳机按键的功能:

在FMRadioService.java文件通过调用 MediaSession 的回调函数MediaSession.Callback mSessionCallback实现耳机按键功能

通过设置mSession.setFlags(MediaSession.FLAG_EXCLUSIVE_GLOBAL_PRIORITY); 可以实现FM在后台也能接受到耳机按键的功能。

但是通过测试发现,一旦进入FM再退出后

通话就接受不了耳机的按键,

通话处理耳机按键的文件和函数是

HeadsetMediaButton.java 和 CallsManager.java

HeadsetMediaButton.java也是调用MediaSession.Callback mSessionCallback的回调函数将按键消息发送给CallsManager.java

 

HeadsetMediaButton.java也是设置了全局有限的标志位,

                    session.setFlags(MediaSession.FLAG_EXCLUSIVE_GLOBAL_PRIORITY
                            | MediaSession.FLAG_HANDLES_MEDIA_BUTTONS);

导致了和FM有冲突的问题, 具体怎么冲突没有查找出原因, 哪位大神找出原因可以在评论区回复一下,

既然找不到冲突原因, 就可以避免冲突吧。

 

通过测试发现每次来电时会将mSession.setActive(true); 激活

挂点电话后会将mSession.setActive(false); 激灭

++++++++++++++++++

+ code

++++++++++++++++++

你的鼓励将是我创作的最大动力添加微信号zyq-1206

打赏后给出方案 哈哈

 

即可避免耳机按键功能不能使用的问题。

MediaSession 类的主要功能是对媒体按键事件 媒体播放处理的分发处理工作  onMediaButtonEvent等函数。

 

 

你可能感兴趣的:(Android)