鍵盤管理

題目比較簡單,《鍵盤管理》,但是實際上的工作還是比較複雜的,先描述一下:

環境:

1、產品的硬件完全是自己開發的,用了芯片廠家給的Gingerbread的開發包,android的編譯及在板子上跑沒問題了。

2、一個已經銷售產品的模塊,具有管理鍵盤的功能。使用串口和新開發的板子連接。模塊和主板採用私有的通訊協議。其中有很多按鍵被定義成了系統按鍵。

3、新開發的板子上也管理了幾個按鍵,主要是系統按鍵。

目的:

1、按串口管理的一部分系統按鍵,android啓動相應的應用程序。

2、按串口管理的另一部分系統按鍵,android執行特定的操作。

3、按串口管理的數字鍵及字母鍵時,如果有輸入焦點,在相應的輸入框內顯示相應的字符,如果當前應用沒有輸入框或在桌面上,啓動一個特定的應用程序。

因爲串口還會被rild使用,所以讀按鍵值的時候不能和rild中reference-ril的atchannel.c的readline衝突。

目前涉及到的部分有:

rild,主要是libreference-ril.so相關的代碼。

uinput的操作。

frameworks/base/libs/ui下面的EventHub.cpp、Inpue*.cpp

frameworks/base/services/jni/com_android_server_InputManager.cpp

frameworks/base/services/java/com/android/server/Input*.java

frameworks/base/services/java/com/android/server/am/ActivityManagerService.java

 要從count = read(s_fd, p_read,MAX_KEY_CODE);  讀串口開始,一直分析到如何

Intent intent = new Intent(Intent.ACTION_MY_ACTIVITY); 啓動一個特定的應用。

其中涉及到的部分比較多,要一步一步的分析及整理。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章