之前参考双击调用Camera,添加了一个双击启动音量面板的功能,为啥?因为这手机只有power键!
实现功能前,先摸清流程对我们的开发会更方便。
power键大概流程
PhoneWindowManager.java 类是 处理各种 power 键流程的地方,
case KeyEvent.KEYCODE_POWER:
if (down) {
interceptPowerKeyDown(event, interactive);
} else {
interceptPowerKeyUp(event, interactive, canceled);
}
power键按下在interceptPowerKeyDown()执行,松开的操作在interceptPowerKeyUp()中执行
interceptPowerKeyDown()方法中会调用 GestureLauncherService.java 的 interceptPowerKeyDown() 方法
GestureLauncherService gestureService = LocalServices.getService(
GestureLauncherService.class);
boolean gesturedServiceIntercepted = false;
if (gestureService != null) {
gesturedServiceIntercepted = gestureService.interceptPowerKeyDown(event, interactive,
mTmpBoolean);
if (mTmpBoolean.value && mRequestedOrGoingToSleep) {
mCameraGestureTriggeredDuringGoingToSleep = true;
}
}
跟踪看看GestureLauncherService.java 中 执行 interceptPowerKeyDown()方法如下
public boolean interceptPowerKeyDown(KeyEvent event, boolean interactive,
MutableBoolean outLaunched) {
boolean launched = false;
boolean intercept = false;
long powerTapInterval;