android 按键无响应,翻车现场之Android遥控按键无响应

本文讲述了在新项目中遇到的一个问题,即蓝牙遥控器配对后按键无响应。通过Debug发现按键在转换过程中keycode变为0x00,原因是KeyLayoutMap文件配置不当。通过分析Android的按键转换机制,找到问题在于未正确加载Generic.kl文件。使用validatekeymaps工具检测并修复Generic.kl文件的错误后,问题得到解决。
摘要由CSDN通过智能技术生成

问题现象

新项目开始,QA 报了个问题,蓝牙遥控器配对后按键就不响应了.......

好吧,很明显蓝牙遥控器没配对之前肯定是走红外过去的,配对以后就变成走蓝牙了,现在是按键走蓝牙有问题,那就看看吧。

开始 Debug

首先想到用 getevent 试试,输入后发现一切正常,按键后有键值打印出来,那就再往上看看。

然后通过 logcat 直接 grep keycode 发现 key 经过 Android input 到 windowsManger 后 keycode 变成了 0x00,好吧,难怪会没有响应。

那从什么时候 keycode 从有值变成 0x00 呢?

然后有请 printf 大法,同时把 android input 相关模块的全部打印开出来,再加了几条打印。

编译 push 进去最后发现是在按键转换的时候进去的时候还正常出来就变 0x00 了。

到这里大概能猜到是 keymap 文件出了问题了。

分析解决

在 android 里面按键的转换是由 KeyLayoutMap 文件完成的,我们可以为每个输入设备添加 KeyLayoutMap 文件, 也可以直接使用系统提供的默认 KeyLayoutMap 文件 Generic.kl。

当系统识别到一个新的输入设备后,便会去为其找到合适的 kl 文件,它的查找顺序如下:

/odm/usr/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl

/vendor/usr/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl

/system/us

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值