zoukankan      html  css  js  c++  java
  • Android Input设备debug技巧

    一、驱动层

            检查是否有点上报

            adb shell getevent -l /dev/input/eventX


            检查input设备支持的属性值

            adb shell getevent -i /dev/input/eventX


    二、Native层

            检查驱动上报的点是否被InputReader转发给上层

            在TouchInputMapper::sync(nsecs_t when)函数中,打印相关的变量值,检查报点路径是否正常。驱动已经报点,但是上层收不到点的情况大致有以下几种:

            a. 设备模式被设为禁用模式,mDeviceMode == DEVICE_MODE_DISABLED

      引起此问题的原因是,在注册input device时,有些属性值设置不合法,导致在configure阶段,走了异常流程;

            b. 设备类型不正确,走了其他路径


    三、Java层

            在ViewRootImpl.java文件的onInputEvent( )函数中添加打印信息,检查底层上报的点,是否通过Framework层成功上报了。

            一般来讲,如果onInputEvent能收到点,报点基本上是OK的。

           有些特殊情况除外,报点的消息类型不正确或者TP的横竖坐标搞反了,会出现上层收点了,但是TP仍然无法正常使用。


           以上是debug input子系统的几个关键地方,如果想debug更细一些,还可以划分更多关键点出来,但是根据我目前的调试经验,这几点基本够用了。希望这个能给大家在调试的时候提供一些帮助!

  • 相关阅读:
    MySql面试题、知识汇总、牛客网SQL专题练习
    产生过拟合的原因
    《人类简史》这本烧脑书风靡全球的秘密是什么?
    厌食?暴食?试试这个 VR 新疗法
    协程、异步IO
    进程池
    进程(同步)锁
    特朗普变脸:同媒体“友好会谈”,怨媒体“死不悔改”
    多进程Queue
    redis 在 php 中的应用(事务 [ Transaction ] 篇)
  • 原文地址:https://www.cnblogs.com/riskyer/p/3324931.html
Copyright © 2011-2022 走看看