二、touch事件分析
專注于為中小企業(yè)提供成都網站設計、成都網站制作服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)蓋州免費做網站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯網行業(yè)人才,有力地推動了上千多家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網站建設實現規(guī)模擴充和轉變。
1、機器touch設備的具體信息
分析:此設備名字:mtk-tpd
支持:key abs
支持abs的type:0000 0001 0018...
type0035支持的最大取值為480
2、touch 事件
觸摸事件的type:
#define SYN_REPORT 0
#define SYN_CONFIG 1
#define SYN_MT_REPORT 2
……………………… ...
#define ABS_MT_TOUCH_MAJOR 0x30 /* Major axis of touching ellipse */
#define ABS_MT_TOUCH_MINOR 0x31 /* Minor axis (omit if circular) */
#define ABS_MT_WIDTH_MAJOR 0x32 /* Major axis of approaching ellipse */
#define ABS_MT_WIDTH_MINOR 0x33 /* Minor axis (omit if circular) */
#define ABS_MT_ORIENTATION 0x34 /* Ellipse orientation */
#define ABS_MT_POSITION_X 0x35 /* Center X ellipse position */
#define ABS_MT_POSITION_Y 0x36 /* Center Y ellipse position */
#define ABS_MT_TOOL_TYPE 0x37 /* Type of touching device */
#define ABS_MT_BLOB_ID 0x38 /* Group a set of packets as a blob */
區(qū)分手機設備單點還是多點:
int EventHub::open_device(const char *deviceName)
{
………………………
if (test_bit(ABS_MT_TOUCH_MAJOR, abs_bitmask)
&& test_bit(ABS_MT_POSITION_X, abs_bitmask)
&& test_bit(ABS_MT_POSITION_Y, abs_bitmask)) {
device->classes |= CLASS_TOUCHSCREEN | CLASS_TOUCHSCREEN_MT;
// LOGI("It is a multi-touch screen!");
}
//single-touch?
else if (test_bit(BTN_TOUCH, key_bitmask)
&& test_bit(ABS_X, abs_bitmask)
&& test_bit(ABS_Y, abs_bitmask)) {
device->classes |= CLASS_TOUCHSCREEN;
// LOGI("It is a single-touch screen!");
}
……………… ..
}
對于一個Touch事件,不同機型會有不同的組成,你用getevent顯示出來的也不一樣。可以通過下面幾點去組成一個touch事件:
1、是否支持BTN_TOUCH,通過判斷該abs設備是否還支持key事件來判斷是否需要BTN_TOUCH,像
這個就是支持key事件的,而且持之BTN_TOUCH(014a :十進制為330)。對于這種設備,
在發(fā)送touchdown事件的時候需要添加 eventX 0001 014a 1的事件,對應在touchUp的時候需要添加 eventX 0001 014a 0。
當不支持BTN_TOUCH的時候,就要省去該事件語句
2、判斷多點觸摸的協(xié)議類型,根據判斷是否支持ABS_MT_SLOT。
多點觸摸協(xié)議可以參考http://blog.csdn.net/droidphone/article/details/8434768
文章中詳細說明了多點觸摸協(xié)議的兩種類型,還有兩種類型分別的事件語句組成
A:有狀態(tài)類型
ABS_MT_TRACKING_ID touchDown必須要有值,touchUp的時候值為-1
同步語句只要SYN_REPORT
B:無狀態(tài)類型
ABS_MT_TRACKING_ID touchDown必須要有值,touchUp的時候值為0
同步語句要包括:SYN_REPORT 、SYN_MT_REPORT
3、對于touchDown,還必須包括:ABS_MT_POSITION_X
ABS_MT_POSITION_Y
SYN_REPORT
ABS_MT_TOUCH_MAJOR
ABS_MT_PRESSURE
4、對于touchMove,還必須包括: ABS_MT_POSITION_X
ABS_MT_POSITION_Y
SYN_REPORT
(無狀態(tài))ABS_MT_TRACKING_ID、SYN_MT_REPORT
ABS_MT_TOUCH_MAJOR
5、對于touchUP,還必須包括:
有狀態(tài):ABS_MT_TRACKING_ID -1BTN_TOUCH 0SYN_REPORT無狀態(tài):ABS_MT_TRACKING_ID 0ABS_MT_TOUCH_MAJOR 0BTN_TOUCH 0SYN_MT_REPORTSYN_REPORT
當前文章:androidevent事件錄制回放--2touch事件分析
轉載源于:http://m.kartarina.com/article28/pipjcp.html
成都網站建設公司_創(chuàng)新互聯,為您提供建站公司、搜索引擎優(yōu)化、網站設計公司、網站收錄、小程序開發(fā)、定制網站
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯