Android從觸碰屏幕開始的事件采集解析及分發(fā)
1 原始事件信息
打開模擬器, 或者用usb把手機(jī)連接上電腦并打開手機(jī)上面的開發(fā)者模式, (這里為了截圖方便用了模擬器)打開cmd, 輸入adb shell getevent回車, 然后點(diǎn)擊模擬器或者手機(jī)后, 就會(huì)看到有N多行的/dev/input/event......輸出. 其實(shí), 這些信息就是最原始的事件信息.

2 信息分析
cmd重新執(zhí)行adb shell getevent -t -l, 再次點(diǎn)擊手機(jī)的某個(gè)app, 顯示出的信息是這樣的:

是手機(jī)或模擬器開機(jī)后到命令執(zhí)行時(shí)的時(shí)間間隔, 后面顯示的是具體命令, 其中, /dev/input/event1表示的是屏幕的輸入事件, 第一個(gè)ABS_MT_TRACKING_ID 表示采集信息開始, 后一個(gè)ABS_MT_TRACKING_ID表示采集信息結(jié)束, ABS_MT_PRESSURE表示的是屏幕感受到的壓力值, SYN_REPORT 表示的是同步數(shù)據(jù), 最重要的是ABS_MT_POSITION_X和ABS_MT_POSITION_Y, 毫無疑問, 這個(gè)就是表示屏幕感受到的觸碰坐標(biāo)位置. 最右邊的一列是16進(jìn)制的值.
其他的信息我們可以先忽略, 最主要的是要記錄時(shí)間和坐標(biāo)點(diǎn), 接下來就是把采集到的坐標(biāo)點(diǎn)轉(zhuǎn)換成10進(jìn)制的坐標(biāo)點(diǎn), x坐標(biāo)采集到的值是00005487,轉(zhuǎn)換10進(jìn)制是21639, 同理, y坐標(biāo)轉(zhuǎn)換前是00006b5b, 轉(zhuǎn)換后是27483, 接下來需要根據(jù)公式來獲取到真正的應(yīng)用層能識(shí)別的坐標(biāo)系, 具體公式為:

手機(jī)像素我們可以通過代碼獲取當(dāng)前手機(jī)的像素, 但是xmin和xmax, 以及ymin和ymax是什么呢?我們還是通過cmd用adb shell getevent -p命令來獲取. 執(zhí)行命令后,拉到最下方, 看到如下圖示:

我們找到0035和0036的行, 即
0035 : value 0, min 0, max 1727, fuzz 0, flat 0, resolution 0
0036 : value 0, min 0, max 1887, fuzz 0, flat 0, resolution 0
0035所在的行就是x信息, 0036所在的行就是y信息, 每行的min值和max值對(duì)應(yīng)上面公式的min和max, 所以我這里最終轉(zhuǎn)換成的x, y坐標(biāo)結(jié)果如下: (我的模擬器經(jīng)過代碼獲取的寬高分辨率分別是1728, 1888)
x = (19b - 0) * 1728 /(1727-0) = 411 * 1728 / 1727 =
y = (405 - 0) * 1888 / (1887-0) = 405
以上就是Android從觸碰屏幕開始的事件采集解析及分發(fā)的詳細(xì)內(nèi)容,更多關(guān)于Android觸碰屏幕事件采集分發(fā)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Android 調(diào)用系統(tǒng)應(yīng)用的方法總結(jié)
這篇文章主要介紹了Android 調(diào)用系統(tǒng)應(yīng)用的方法總結(jié)的相關(guān)資料,這里提供調(diào)用錄像,錄音,拍照等功能,需要的朋友可以參考下2017-08-08
Android官方的側(cè)滑控件DrawerLayout的示例代碼
這篇文章主要介紹了Android官方的側(cè)滑控件DrawerLayout的示例代碼,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-09-09
Android DataBinding單向數(shù)據(jù)綁定深入探究
看了谷歌官方文章確實(shí)寫的太簡略了,甚至看完之后有很多地方還不知道怎么回事兒或者怎么用,那么接下來我將通過文章全面介紹一下DataBinding單向數(shù)據(jù)綁定2022-11-11
Android Studio修改Log信息顏色的實(shí)現(xiàn)
這篇文章主要介紹了Android Studio修改Log信息顏色的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Android開發(fā)手冊(cè)TextInputLayout樣式使用示例
這篇文章主要為大家介紹了Android開發(fā)手冊(cè)TextInputLayout樣式使用示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06

