在PhoneWindowManager.java中
interceptKeyBeforeQueueing方法中添加如下代码
switch (keyCode) {
case KeyEvent.KEYCODE_C: {
if (down && SystemProperties.getBoolean("persist.sys.gesture.enable", false)
&& SystemProperties.getBoolean("persist.sys.gesture.c", false)) {
playGestureAnimation('c'); //这个地方是播放手势动画
//wakeScreenHandler.sendEmptyMessageDelayed(MSG_WAKE_SCREEN, 220);
myHandler.sendEmptyMessageDelayed(MSG_OPEN_CAMERA, 1000);//这个地方是手势动画伴随的动作,比如打开相机
setSleep();//播放手势动画不在主线程中,所以要主线程睡眠下,等待启动手势动画
dismissKeyguardOnNextActivity();//这个是解锁
result |= ACTION_WAKE_UP;//这个地方是唤醒屏幕
}
break;
}
case KeyEvent.KEYCODE_E: {
if (down && SystemProperties.getBoolean("persist.sys.gesture.enable", false)
&& SystemProperties.getBoolean("persist.sys.gesture.e", false)) {
playGestureAnimation('e');
//wakeScreenHandler.sendEmptyMessageDelayed(MSG_WAKE_SCREEN, 220);
myHandler.sendEmptyMessageDelayed(MSG_OPEN_BROWSER, 1000);
setSleep();
dismissKeyguardOnNextActivity();
result |= ACTION_WAKE_UP;
}
break;
}
case KeyEvent.KEYCODE_W: {
if (down && SystemProperties.getBoolean("persist.sys.gesture.enable", false)
&& SystemProperties.getBoolean("persist.sys.gesture.w", false)) {
playGestureAnimation('w');
//wakeScreenHandler.sendEmptyMessageDelayed(MSG_WAKE_SCREEN, 220);
myHandler.sendEmptyMessageDelayed(MSG_OPEN_FILE, 1000);
setSleep();
dismissKeyguardOnNextActivity();
result |= ACTION_WAKE_UP;
}
break;
}
case KeyEvent.KEYCODE_M: {
if (down && SystemProperties.getBoolean("persist.sys.gesture.enable", false)
&& SystemProperties.getBoolean("persist.sys.gesture.m",false)) {
playGestureAnimation('m');
//wakeScreenHandler.sendEmptyMessageDelayed(MSG_WAKE_SCREEN, 220);
myHandler.sendEmptyMessageDelayed(MSG_OPEN_MUSIC, 1000);
setSleep();
dismissKeyguardOnNextActivity();
result |= ACTION_WAKE_UP;
}
break;
}
case KeyEvent.KEYCODE_O: {
if (down && SystemProperties.getBoolean("persist.sys.gesture.enable", false)
&& SystemProperties.getBoolean("persist.sys.gesture.o",false)) {
playGestureAnimation('o');
//wakeScreenHandler.sendEmptyMessageDelayed(MSG_WAKE_SCREEN, 220);
myHandler.sendEmptyMessageDelayed(MSG_OPEN_DIALER, 1000);
setSleep();
dismissKeyguardOnNextActivity(