欢迎来到天天文库
浏览记录
ID:39464567
大小:20.11 KB
页数:10页
时间:2019-07-03
《Android多点触摸的实现——1.6patch 一 》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Android多点触摸的实现——1.6patch(一)第一章摘要在Linux内核支持的基础上,Android在其2.0源码中加入多点触摸功能。由此触摸屏在Android的frameworks被完全分为2种实现途径:单点触摸屏的单点方式,多点触摸屏的单点和多点方式。第二章软件位在Linux的input.h中,多点触摸功能依赖于以下几个主要的软件位:………………………..#defineSYN_REPORT0#defineSYN_CONFIG1#defineSYN_MT_REPORT2……………………….
2、..#defineABS_MT_TOUCH_MAJOR0x30/*Majoraxisoftouchingellipse*/#defineABS_MT_TOUCH_MINOR0x31/*Minoraxis(omitifcircular)*/#defineABS_MT_WIDTH_MAJOR0x32/*Majoraxisofapproachingellipse*/#defineABS_MT_WIDTH_MINOR0x33/*Minoraxis(omitifcircular)*/#defineABS_MT
3、_ORIENTATION0x34/*Ellipseorientation*/#defineABS_MT_POSITION_X0x35/*CenterXellipseposition*/#defineABS_MT_POSITION_Y0x36/*CenterYellipseposition*/#defineABS_MT_TOOL_TYPE0x37/*Typeoftouchingdevice*/#defineABS_MT_BLOB_ID0x38/*Groupasetofpacketsasablob*/…
4、………………………在Android中对应的软件位定义在RawInputEvent.java中:…………………..publicclassRawInputEvent{……………….publicstaticfinalintCLASS_TOUCHSCREEN_MT=0x00000010;………………..publicstaticfinalintABS_MT_TOUCH_MAJOR=0x30;publicstaticfinalintABS_MT_TOUCH_MINOR=0x31;publicstaticfina
5、lintABS_MT_WIDTH_MAJOR=0x32;publicstaticfinalintABS_MT_WIDTH_MINOR=0x33;publicstaticfinalintABS_MT_ORIENTATION=0x34;publicstaticfinalintABS_MT_POSITION_X=0x35;publicstaticfinalintABS_MT_POSITION_Y=0x36;publicstaticfinalintABS_MT_TOOL_TYPE=0x37;publicst
6、aticfinalintABS_MT_BLOB_ID=0x38;………………….publicstaticfinalintSYN_REPORT=0;publicstaticfinalintSYN_CONFIG=1;publicstaticfinalintSYN_MT_REPORT=2;………………..在Android中,多点触摸的实现方法在具体的代码实现中和单点是完全区分开的。在Android代码的EventHub.cpp中,单点屏和多点屏由如下代码段来判定:intEventHub::open_dev
7、ice(constchar*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
8、=CLASS_TOUCHSCREEN
9、CLASS_TOUCHSCREEN_MT;//LOGI("Itisamulti-touchscreen!");
10、}//single-touch?elseif(test_bit(BTN_TOUCH,key_bitmask)&&test_bit(ABS_X,abs_bitmask)&&test_bit(ABS_Y,abs_bitmask)){device->classes
11、=CLASS_TOUCHSCREEN;//LOGI("Itisasingle-touchscreen!");}………………..}我们知道,在触摸屏驱动中,通常在probe函数中会调用input_set_abs_p
此文档下载收益归作者所有