編輯:Android開發實例
Android系統中,目前沒有一個接口可以讓應用隨時獲取Touch事件,而這個功能恰恰是全屏手寫中很重要的一個部分。 手寫輸入的實現主要分為3個部分:
1、筆畫的獲取
2、筆畫的繪制
3、筆畫的識別
在以往broncho項目中,根據平時的交流和對WM的粗略接觸,以往全屏手寫的筆畫獲取都是在WM裡處理來實現筆畫數據獲取的。這一次在android系統上實現全屏手寫,稍微改變了一下思路:
1、WM提供一個touch事件發送接口,讓應用可以注冊一個touch事件監聽。事件監聽函數返回true,WM不再處理這個事件,返回false,WM繼續分發這個事件。
2、WM提供一個touch事件發送接口,讓應用可以模擬發送touch事件。
3、修改WM事件分發函數,在分發touch事件到應用前,先調用事件監聽函數。發送touch事件的接口可以直接調用WM的接口。
4、WM就做了這些修改,筆畫的獲取處理放到了全屏手寫輸入法中。
根據今天(2009年6月26日)在硬件上的調試結果,這個思路還是靈活的,對筆畫事件獲取的處理不再需要修改WM,直接修改全屏手寫應用,然後安裝即可。
目前的測試結果是筆畫的獲取還有不足,如多余的MOVE事件沒有過濾(多余的MOVE事件就是沒有收到DOWN事件時收到了MOVE事件);在模擬器上鼠標點擊和實際手指觸碰是完全不同的處理的,導致無法點擊按鈕。
修改的文件和要點:
添加和實現兩個接口
void setGlobalPointerEventListener(IWindow window);
boolean injectGlobalPointerEvent(in MotionEvent event, boolean sync);
frameworks/base/core/java/android/view/IWindowSession.aidl
frameworks/base/services/java/com/android/server/WindowManagerService.java
添加接口
boolean dispatchGlobalPointer(in MotionEvent event, long eventTime);
frameworks/base/core/java/android/view/IWindow.aidl
添加接口引用
frameworks/base/tools/layoutlib/bridge/src/com/android/layoutlib/bridge/Bridge.java
修改接口實現
frameworks/base/core/java/android/view/ViewRoot.java
frameworks/base/core/java/android/view/SurfaceView.java
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個
1.黑白效果 代碼如下:/** * 將彩色圖轉換為黑白圖 * &n
從本文開始為大家制作一個Android個人理財工具,並把整個開發過程記錄下來,
JSON代表JavaScript對象符號。它是一個獨立的數據交換格式,是XML的最佳替代品。本章介紹了如何解析JSON文件,並從中提取所需的信息。Android提供了四個