正文

8.1.1 用戶(hù)輸入系統(tǒng)的結(jié)構(gòu)

Android系統(tǒng)級(jí)深入開(kāi)發(fā):移植與調(diào)試 作者:韓超


Android用戶(hù)輸入系統(tǒng)的結(jié)構(gòu)比較簡(jiǎn)單,自下而上包含了驅(qū)動(dòng)程序、本地庫(kù)處理部分、Java類(lèi)對(duì)輸入事件的處理、對(duì)Java程序的接口。Android用戶(hù)輸入系統(tǒng)的結(jié)構(gòu)如圖8-2所示。

如圖8-2所示,自下而上,Android的用戶(hù)輸入系統(tǒng)分成幾個(gè)部分:

 驅(qū)動(dòng)程序:在/dev/input目錄中,通常是Event類(lèi)型的驅(qū)動(dòng)程序

  EventHub:本地框架層的EventHub是libui中的一部分,它實(shí)現(xiàn)了對(duì)驅(qū)動(dòng)程序的控制,并從中獲得信息

  KeyLayout(按鍵布局)和KeyCharacterMap(按鍵字符映射)文件。同時(shí),libui中有相應(yīng)的代碼對(duì)其操作。定義按鍵布局和按鍵字符映射需要運(yùn)行時(shí)配置文件的支持,它們的后綴名分別為kl和kcm

  Java框架層的處理:在Java框架層具有KeyInputDevice等類(lèi)用于處理由EventHub傳送上來(lái)的信息,通常信息由數(shù)據(jù)結(jié)構(gòu)RawInputEvent和KeyEvent來(lái)表示。通常情況下,對(duì)于按鍵事件,則直接使用KeyEvent來(lái)傳送給應(yīng)用程序?qū)?,?duì)于觸摸屏和軌跡球等事件,則由RawInputEvent經(jīng)過(guò)轉(zhuǎn)換后,形成MotionEvent時(shí)間傳送給應(yīng)用程序?qū)?/p>

 在Android的應(yīng)用程序?qū)又校ㄟ^(guò)重新實(shí)現(xiàn)onTouchEvent和onTrackballEvent等函數(shù)來(lái)接收運(yùn)動(dòng)事件(MotionEvent),通過(guò)重新實(shí)現(xiàn)onKeyDown和onKeyUp等函數(shù)來(lái)接收按鍵事件(KeyEvent)。這些類(lèi)包含在android.view包中

 


上一章目錄下一章

Copyright ? 讀書(shū)網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)