Android framework中双击home 的实现
2015-10-02 16:54
513 查看
[b]前言
欢迎大家我分享和推荐好用的代码段~~
声明
欢迎转载,但请保留文章原始出处:
CSDN:http://www.csdn.net
雨季o莫忧离:http://blog.csdn.net/luckkof[/b]
正文
如果你需要做双击 home key 的检测
你可以参考如下 sample code 自行实现
请修改 phoneWindowManager.java 的 interceptKeyBeforeQueueing 方法
找到参考位置后, 加入注释所述代码:
[java] view
plaincopy
<span style="font-family:SimSun;font-size:10px;"> //以下是原有代码, 即参考行
if (down && (policyFlags & WindowManagerPolicy.FLAG_VIRTUAL) != 0
&& event.getRepeatCount() == 0) {
performHapticFeedbackLw(null, HapticFeedbackConstants.VIRTUAL_KEY, false);
}
//参考行到此结束</span>
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
[java] view
plaincopy
<span style="font-family:SimSun;font-size:10px;">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();
}
}</span>
// mtk sample code for double home click detection END.
欢迎大家我分享和推荐好用的代码段~~
声明
欢迎转载,但请保留文章原始出处:
CSDN:http://www.csdn.net
雨季o莫忧离:http://blog.csdn.net/luckkof[/b]
正文
如果你需要做双击 home key 的检测
你可以参考如下 sample code 自行实现
请修改 phoneWindowManager.java 的 interceptKeyBeforeQueueing 方法
找到参考位置后, 加入注释所述代码:
[java] view
plaincopy
<span style="font-family:SimSun;font-size:10px;"> //以下是原有代码, 即参考行
if (down && (policyFlags & WindowManagerPolicy.FLAG_VIRTUAL) != 0
&& event.getRepeatCount() == 0) {
performHapticFeedbackLw(null, HapticFeedbackConstants.VIRTUAL_KEY, false);
}
//参考行到此结束</span>
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
[java] view
plaincopy
<span style="font-family:SimSun;font-size:10px;">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();
}
}</span>
// mtk sample code for double home click detection END.
相关文章推荐
- 基于Android 4.4 开发的多窗口系统 开放源码
- android--Activity窗口切换(左右滑动)
- XBMC 使用 Android StageFright 硬件解码
- Java基础知识强化之多线程笔记01:多线程基础知识(详见Android(java)笔记61~76)
- Android Design: 九种常见Activity及代码解析之"Navigation Drawer Activity"
- Android控件布局属性全解
- android布局属性大全
- 【Android】Camera 使用浅析
- ubuntu下Android studio布局文件无法可视化问题-Could not initialize class com.android.layoutlib.bridge.impl.Render
- 【Android】Camera 使用浅析
- ViewPager与android.support.design.widget.TabLayout双向交互联动切换
- Android Design: 九种常见Activity及代码解析之"Login Activity"
- android studio 中文乱码
- Android-Material-Design-for-pre-Lollipop
- [Android基础]AsyncTask类
- Android Studio启动配置gradle遇到的问题
- ubuntu下Android studio使用问题汇总及注意到
- Android Design: 九种常见Activity及代码解析之"Empty""Blank""Fullscreen"
- Android 仿网易新闻客户端Tab标签
- Android获得当前正在运行的Activity及相关信息