Android用戶輸入系統(tǒng)的結構比較簡單,自下而上包含了驅動程序、本地庫處理部分、Java類對輸入事件的處理、對Java程序的接口。Android用戶輸入系統(tǒng)的結構如圖8-2所示。
如圖8-2所示,自下而上,Android的用戶輸入系統(tǒng)分成幾個部分:
驅動程序:在/dev/input目錄中,通常是Event類型的驅動程序
EventHub:本地框架層的EventHub是libui中的一部分,它實現(xiàn)了對驅動程序的控制,并從中獲得信息
KeyLayout(按鍵布局)和KeyCharacterMap(按鍵字符映射)文件。同時,libui中有相應的代碼對其操作。定義按鍵布局和按鍵字符映射需要運行時配置文件的支持,它們的后綴名分別為kl和kcm
Java框架層的處理:在Java框架層具有KeyInputDevice等類用于處理由EventHub傳送上來的信息,通常信息由數(shù)據(jù)結構RawInputEvent和KeyEvent來表示。通常情況下,對于按鍵事件,則直接使用KeyEvent來傳送給應用程序層,對于觸摸屏和軌跡球等事件,則由RawInputEvent經過轉換后,形成MotionEvent時間傳送給應用程序層
在Android的應用程序層中,通過重新實現(xiàn)onTouchEvent和onTrackballEvent等函數(shù)來接收運動事件(MotionEvent),通過重新實現(xiàn)onKeyDown和onKeyUp等函數(shù)來接收按鍵事件(KeyEvent)。這些類包含在android.view包中