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等函数来接收运动事件, 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相关软件测试,如图所示:
相关资讯
发表评论
|