如何实现双击 home 弹RecentAPP

本文介绍如何在phoneWindowManager.java文件中修改interceptKeyBeforeQueueing方法,以实现通过双击Home键触发特定操作的功能。该操作检测两次按下Home键的时间间隔,并在小于500毫秒时调用最近的应用程序切换。
请修改 phoneWindowManager.java 的 interceptKeyBeforeQueueing 方法
找到参考位置后, 加入注释所述代码:

//以下是原有代码, 即参考行
if (down && (policyFlags & WindowManagerPolicy.FLAG_VIRTUAL) != 0
&& event.getRepeatCount() == 0) {
performHapticFeedbackLw(null, HapticFeedbackConstants.VIRTUAL_KEY, false);
}
//参考行到此结束

int result = 0; //原为 int result, 请加入初始值.

// mtk sample code for double home click detection BEGIN.

//请在类中补充 boolean homeDownDoubleClick = false; 的定义
//请在类中补充 long lastHomeDownTime=0; 的定义
//请在类中补充 long lastHomeUpTime=0; 的定义
//检测原理: 检测上一次按下的 home key 与本次按下的 home key 时间间隔是否 < 500ms
//if yes, 则认为是双击 home key

if(keyCode == KeyEvent.KEYCODE_HOME){
if(down){
// this is home down
if(((event.getEventTime() - lastHomeDownTime) < 500)){
homeDownDoubleClick = true;
}else{
homeDownDoubleClick = false;
}
lastHomeDownTime = event.getEventTime();
}else{
// then home up comes
Log.d(TAG,"homeDownDoubleClick="+homeDownDoubleClick+",lastHomeDownTime="+lastHomeDownTime+",lastHomeUpTime="+lastHomeUpTime+",this home up="+event.getEventTime());
if(homeDownDoubleClick && ((event.getEventTime() - lastHomeUpTime) < 500)){
Log.d(TAG,"double click on home detected");
try {
IStatusBarService statusbar = getStatusBarService();
if (statusbar != null) {
statusbar.preloadRecentApps();
statusbar.toggleRecentApps();
}
} catch (RemoteException e) {
Slog.e(TAG, "RemoteException when preloading recent apps", e);
mStatusBarService = null;
}

result |= ACTION_WAKE_UP;
return result;
}
lastHomeUpTime = event.getEventTime();
}
}

// mtk sample code for double home click detection END.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值