键盘管理

题目比较简单,《键盘管理》,但是实际上的工作还是比较复杂的,先描述一下:

环境:

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); 启动一个特定的应用。

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

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