Android 4.0中按键的处理流程

2014-11-24 08:24:41 · 作者: · 浏览: 2

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


普通按键盘流程


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)==》