高通Android 8.1 扫码枪无法扫sn包含2或者全部是2的问题

 背景:由于近期工厂生产,测试突然反馈扫码枪扫sn总是丢失2,比如

AXB2SHS822009997/LSXG 结果显示是 AXBSHS800997/LSX

于是我叫测试找了之前可以版本然后抓日志进行对比发现,确实只有2这个数字无法扫,如果把2这一位改成其他数字或者字母都是可以正常显示,于是带着这个问题我们做了以下验证。

第一步

7661432800064

1、扫码枪扫机身二维码 都是可以正常扫码 

2、扫码枪在产测apk或者系统自带浏览器输入框扫码无法识别2 (xxx版本)

3、7月27版本 装 10月26日 产测apk 直接连hub也是可以用扫码枪扫sn号

4、扫码枪 扫设备主板8701112339000114 实际显示8701 1133 9000 114

第二步:到这里基本排除扫码枪跟产测apk的问题 

为了再次确认此异常版本是否可以正常输入2 ,于是我尝试用usb键盘接hub然后连接设备 此时输入2戴上键盘查看输入框也是无法输入2 ,因此问题基本可以锁定,应该哪里keycode把2替换了?

第三步:于是带着这个思路 查看确定异常版本之前以及出现问题版本git log 查看发现 有修改adb user版本连接 尝试还原 make clean全编发现扫码枪扫完包含2的sn还是无法正常显示 ,问题依旧存在!

于是进行下一个git log还原 发现之前同事有改一个物理home键,底层修改示例如下图所示

然后再看Generic.kl 中将之前的home键替换 如下图所示

然后我们再回想一下,USB扫码枪原理跟USB键盘都是外设类似于HID设备,都是通过Usb进行通讯,而且键盘都应是ASCII码,key 3 刚好是 2,我们尝试还原试下,发现扫码枪都无法连接,查看日志一直报remote no such device

而且每次连上USB扫码枪就会有一堆事件keycode上报,这些都是在PhoneWindowManager里面interceptKeyBeforeDispatching拦截处理

第四步:这时候发现这样还原还有问题,于是跟驱动商量把KeyCode 原本是115 改回去,但是对应底层dtsi code也要对应改成115,115对应就是Home键,上层KeyEevent默认一般都是不会去做修改。

然后再编译 用草料或者设备机身二维码去扫,sn包含2或者全部是2都显示正常,如下图log所示

到这里基本结束,这个问题其实也存在历史遗留问题,因此修改尽量保存git log或者git log写的详细一点,不然后面排除起来时间比较长,另外可以结合对应google aosp 8.1源码进行对比。包括正常异常机器日志进行对比,然后分析代码流程。基本就能定位问题。

总结:

1、根据正常异常日志跟代码 

2、一般拦截都是在frameworks/base/services/core/java/com/android/server/policy/PhoneWindManager处理

3、跟驱动他们拉齐如果不熟悉底层按键处理这一块

4、根据线上google aosp 8.1源码进行对比 找出差异点

转账请注明出处高通Android 8.1 扫码枪无法扫sn包含2或者全部是2的问题-CSDN博客,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值