打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Android 4.0中按键的处理流程

首先,简要的介绍一下按键的处理流程。先简单的分为两大类:一类是虚拟按键。另一类是物理按键。

无论是虚拟按键还是物理按键都是要经过驱动层注册为输入设备,然后上报到kernel/drivers/input/input.c中。这里有相关函数的定义。然后通过、sys上报到frameworks/services/input/EventHub.cpp中,在这里会对设备进行扫描并且判断是哪种设备,然后在InputReader.cpp中对原始数据进行读取。在framewoks/services/input/InputDispatcher.cpp中实现数据的派发。在framework/base/core/jni/android_view_KeyEvent.cpp中实现通过JNI机制向上层的KeyEvent.java提供数据。并且在frameworks/base/core/java/android/view/KeyEvent.java中向上层的APP开发人员提供接口。


普通按键盘流程

HAL层

./hardware/libhardware_legacy/power/power.c

set_screen_state(int on)

hal层按键休眠和唤醒


JNI层

frameworks/base/core/jni/android_os_Power.cpp

static int
setScreenState(JNIEnv *env, jobject clazz, jboolean on)
{
    return set_screen_state(on);
}


JAVA层

frameworks/base/core/java/android/os/Power.java

public static native int setScreenState(boolean on);



frameworks/base/services/java/com/android/server/PowerManagerService.java

为APP层提供以下接口

public void goToSleep(long time)==》public void goToSleepWithReason(long time, int reason)==》private void goToSleepLocked(long time, int reason)==》private void setPowerState(int state)==》


原文地址:http://blog.csdn.net/pkigavin/article/details/8580672

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Android webkit 事件传递流程通道分析
android音频系统java部分代码阅读
Android frameworks层启动分析
一个打通jni,java framework,application三层的练习
Android之 看“马达”如何贯通Android系统 (从硬件设计
Android系统添加全局快捷键的方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服