返回首页
当前位置: 主页 > 网络编程 > Android教程 >

Android多点触摸协议改进

时间:2014-02-10 12:56来源:知行网www.zhixing123.cn 编辑:麦田守望者

以两点为例,Linux多点触摸协议上报次序为

ABS_MT_TOUCH_MAJOR ABS_MT_WIDTH_MAJOR ABS_MT_POSITION_X ABS_MT_POSITION_Y SYN_MT_REPORT //手指1 ABS_MT_TOUCH_MAJOR ABS_MT_WIDTH_MAJOR ABS_MT_POSITION_X ABS_MT_POSITION_Y SYN_MT_REPORT //手指2 SYN_REPORT
即采样一次需上报11个事件,利用率太低,很容易出现丢包的现象。因此我们决定encode data.格式见下表。

Bit 31 30~27 26~20 19~10 9~0
Data Reserved Size Press Y X

可以看出这种编码格式可以支持分辨率1024×1024以下的LCD。完全满足当前及未来很长一段时间内项目的需求。我们将这种上报格式命名为ABS_BYD_MT_DATA,既然是打包上传,SYN_MT_REPORT也可以省略了。修改后的上报次序为

ABS_BYD_MT_DATA //手指1 ABS_BYD_MT_DATA //手指2 SYN_REPORT

为了便于支持2个手指以上的触摸项目,这里我们保留SYN_REPORT。如果修改下android,便可以支持256个手指。扩展起来非常方便

ABS_BYD_MT_DATA //手指1 ABS_BYD_MT_DATA //手指2 … ABS_BYD_MT_DATA //手指256 SYN_REPORT

当然这样修改,android恐怕是无法识别的,修改上层就行了。在EventHub.cpp中定义下 device class,然后在KeyInputQueue.java识别出class,将包解析出来。万事大吉。

------分隔线----------------------------
标签(Tag):Android android教程 android技巧 android软件 android开发教程
------分隔线----------------------------
推荐内容
猜你感兴趣