Android多點觸摸協議改進

來源:互聯網
上載者:User

以兩點為例,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,將包解析出來。萬事大吉。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.