当前位置: > 华清远见教育科技集团 > 嵌入式学习 > 讲师博文 > Android的用户输入系统及实时时钟相关说明一
Android的用户输入系统及实时时钟相关说明一
时间:2016-12-14作者:华清远见

Android中,主要的输入硬件设备有按键、触摸屏、轨迹球等。在Android的上层中,可以通过获取这些设备产生的事件,对设备的事件进行响应。在Java架构和应用程序层,通常使用运动事件获得触摸屏等设备的信息,用键盘事件获得各种键盘信息。

Android用户的输入系统的基本结构如图所示:

Android的用户输入系统分成如下几个部分:

①驱动程序:在/dev/input目录下,通常是event类型的驱动程序。

②EventHub:本地架构层的EventHub是libui中的一部分,它实现对驱动程序的控 制,并从中获取信息。

③KeyLayout(键盘布局)和KeyCharacterMap(按键字符映射)文件。libui中有 相应的代码对其操作。定义按键布局和按键字符映射需要运行配置文件的支持。 它们的后缀分别为kl和kcm。

④Java架构层的处理:在Java架构层具有KeyInputDevice等类用于处理由EventHub 传送上来的信息,通常由KeyEvent等数据结构来表示。

⑤在Android的应用程序层中,通过重新实现onTouchEvent等函数来接收运动事件,
        通过重新实现onKeyDown和onKeyUp等函数来接收按键事件。

Android的警报器系统提供了报警和时间的设置方面的支持,实现的硬件基础通常是实时时钟设备。在Linux代码中,需要有实时时钟设备的驱动程序和Android的Alarm驱动程序。警报器-实时时钟系统包含Jni和Java层的接口,在Java应用程序层可以通过接口控制警报器方面的功能。

Android警报器-实时时钟的基本层次结构如图所示:

(1)内核源码

RTC驱动程序:Linux的实时时钟驱动程序:

代码路径:

lichee/linux-3.0/drivers/rtc/* .

Alarm驱动程序:是Android特定的内核组件,调用RTC系统的功能,和硬件无关。

(2) Jni部分

Alarm部分的本地代码,同时提供了Jni的接口。

代码路径:

android4.0/frameworks/base/services/jni/com_android_server_AlarmManagerService.cpp

(3) Java部分

AlarmManagerService.java实现了android.server包中的AlarmManagerService,AlarmManager.java实现了android.app包中的AlarmManager类,它通过使用AlarmManagerService服务实现,并对Java层提供了平台API。

代码路径:

android4.0/frameworks/base/services/java/com/android/server/AlarmManagerService.java .

android4.0/frameworks/base/core/java/android/app/AlarmManager.java .

Android相关软件测试,如图所示:

发表评论
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)