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更細一些,還可以劃分更多關鍵點出來,但是根據我目前的調試經驗,這幾點基本夠用了。希望這個能給大家在調試的時候提供一些幫助!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章