前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小折腾:修改蓝牙耳机按键映射

小折腾:修改蓝牙耳机按键映射

作者头像
美丽应用
发布2018-07-20 13:40:59
6.3K1
发布2018-07-20 13:40:59
举报
文章被收录于专栏:美丽应用美丽应用

文章更新:

  20170203 初次成文

问题提出

  一般来说蓝牙耳机上面会有一个按钮,这个按钮起到开启/关闭耳机电源,控制音乐播放,接听/挂断电话等功能,而一般来说,在播放音乐的时候,这个按钮往往起到的都是暂停/播放音乐的作用。但是这个功能对小苏来说好像有些鸡肋:对于一个常听网易云音乐的每日推荐和私人FM的用户来说,如果听到一首歌不喜欢,按一下蓝牙耳机的按钮就能直接切到下一首,这个多帅~于是,修改蓝牙耳机按键映射的想法就在脑袋里面萌生了。

解决方案

  经过查找资料,在安卓系统中,蓝牙耳机按键映射的配置文件的路径在:

代码语言:javascript
复制
/system/usr/keylayout/AVRCP.kl

  在修改这个文件之前,我们最好对这个文件进行备份,备份完成后,我们打开这个文件,文件的内容如下:

Screenshot_20170203-224527.png
Screenshot_20170203-224527.png

  在文件注释部分的最后一行我们可以看到:

代码语言:javascript
复制
#  Key layout used for Bluetooth AVRCP support.

  这句注释注明了这是系统为支持AVRCP协议的蓝牙耳机设定的一份按键映射文件。

  而在文件内容部分中,左边一列:"key 200","key 201"等被称为scancode,通俗地说代表按键类别;而右边的一列:"MEDIA_PLAY","MEDIA_PAUSE"等被称为keycode,通俗地说代表按下对应的按键后,系统要响应的动作。因为小苏的蓝牙耳机只能响应暂停和播放两个动作,那么小苏猜测,在音乐处于正在播放的过程中第一次按下蓝牙耳机的按键时,蓝牙耳机将会将按键类别值"key 201"传递给手机,音乐将会暂停;再按一次,蓝牙耳机将会将按键类别值"key 200"传递给手机,音乐将会恢复正常播放状态。

  为了证实以上猜测,小苏使用KeyTest程序(包名:com.keytest,文末会提供下载)来测试按键被按下时的响应情况:

  在音乐正常播放状态下按下蓝牙耳机按键,KeyTest输出以下结果:

Screenshot_20170203-221713.png
Screenshot_20170203-221713.png

  在音乐处于暂停状态下按下蓝牙耳机按键时:

Screenshot_20170203-221700.png
Screenshot_20170203-221700.png

  以上测试结果也证实了小苏的猜测。

  知道以上原理后,剩下的东西就好办了:在默认情况下,音乐的暂停和播放是由两个按键类型"key 201"和"key 200"控制的,所以小苏应该让"key 201"和"key 200"同时响应"下一曲"的动作就可以了,这样,按下蓝牙耳机按键时,不论音乐处于何种状态,不论系统向手机传回的值是"key 201"还是"key 200",系统都会响应"下一曲"的操作。

  最终修改后的文件内容是这样的:

Screenshot_20170203-231720.png
Screenshot_20170203-231720.png

  文件修改完成后,新的按键映射可能需要重启才能生效(但是在小苏这里新的按键映射似乎不用重启也能生效)。我们再用KeyTest程序来测试一下:

Screenshot_20170203-232431.png
Screenshot_20170203-232431.png
Screenshot_20170203-232418.png
Screenshot_20170203-232418.png

  输出结果表明,不论蓝牙耳机传递给手机的值是"key 201"还是"key 200",都会响应"MEDIA_NEXT"即"下一曲"的操作,而事实上也是这样的,不论音乐处于暂停还是正常播放状态,按下蓝牙耳机按键时,都会转向"下一曲"音乐并开始播放~

  然而在小苏的手机上还是有一个小小的遗憾,不知道在你们的手机上存在不存在:

  在未修改按键映射的情况下,只要手机与蓝牙耳机正常连接并按下蓝牙耳机按键时,即使音乐播放程序没有运行,系统也会自动运行你连接过蓝牙耳机的音乐播放程序并开始播放音乐。但是按上述方法修改过按键映射后,在未运行音乐播放程序的情况下,按下蓝牙耳机按键,系统不会自动播放音乐,而需要手动打开音乐播放程序后,按下蓝牙耳机按键,系统才会播放当前音乐的下一首音乐。不过...就是想要播放当前音乐怎么办?超简单,直接在手机上点击播放按钮就可以了~

  不过手动打开一下音乐播放器也费不了多少事儿,所以这个Bug就暂且忽略吧嘿嘿嘿~

资源下载:

  KeyTest:w com.keytest.apk

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-02-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章更新:
  • 问题提出
  • 解决方案
  • 资源下载:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档