Android Home 长按键处理
来源:互联网 发布:永久域名自动转跳 编辑:程序博客网 时间:2024/06/01 20:09
Android Home 长按键处理
1.在Android手机系统开发过程中,通常不同的客户会有要求Home长按处理不同的事务。下面结合源码分析下Long press home的处理过程。
PhoneWindowManager.java
phonewindowmanager中存在对按键操作的过滤分发功能,通过原发发现,Long press home 在此类中处理
public long interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int policyFlags) { ... handleLongPressOnHome(event.getDeviceId()); ... } private void handleLongPressOnHome(int deviceId) { if (mLongPressOnHomeBehavior != LONG_PRESS_HOME_NOTHING) { mHomeConsumed = true; performHapticFeedbackLw(null, HapticFeedbackConstants.LONG_PRESS, false); if (mLongPressOnHomeBehavior == LONG_PRESS_HOME_RECENT_SYSTEM_UI) { toggleRecentApps(); } else if (mLongPressOnHomeBehavior == LONG_PRESS_HOME_ASSIST) { launchAssistAction(null, deviceId); } }}
聪handleLongPressOnHome接口中发现,mLongPressOnHomeBehavior变量是对home 长按操作的基本定义。
// What we do when the user long presses on homeprivate int mLongPressOnHomeBehavior;
mLongPressOnHomeBehavior变量赋值:
private void readConfigurationDependentBehaviors() { mLongPressOnHomeBehavior = mContext.getResources().getInteger( com.android.internal.R.integer.config_longPressOnHomeBehavior); if (mLongPressOnHomeBehavior < LONG_PRESS_HOME_NOTHING || mLongPressOnHomeBehavior > LONG_PRESS_HOME_ASSIST) { mLongPressOnHomeBehavior = LONG_PRESS_HOME_NOTHING; } mDoubleTapOnHomeBehavior = mContext.getResources().getInteger( com.android.internal.R.integer.config_doubleTapOnHomeBehavior); if (mDoubleTapOnHomeBehavior < DOUBLE_TAP_HOME_NOTHING || mDoubleTapOnHomeBehavior > DOUBLE_TAP_HOME_RECENT_SYSTEM_UI) { mDoubleTapOnHomeBehavior = LONG_PRESS_HOME_NOTHING; }}
从上面看到com.android.internal.R.integer.config_longPressOnHomeBehavior 是对长按home的功能定义出
frameworks\base\core\res\res\values\config.xml
<integer name="config_longPressOnHomeBehavior">0</integer><!-- Control the behavior when the user double-taps the home button. 0 - Nothing 1 - Recent apps view in SystemUI This needs to match the constants in policy/src/com/android/internal/policy/impl/PhoneWindowManager.java --><integer name="config_doubleTapOnHomeBehavior">0</integer>
config.xml中:
0:noting
1:recent apps view in systemUi
0 0
- Android Home 长按键处理
- Android 屏蔽 Home 按键
- Android拦截HOME按键
- Android 拦截 HOME 按键
- 监听android home按键
- Android监听HOME按键
- Android监听HOME按键
- Android监听HOME按键
- Android监听HOME按键
- android home按键监听
- android home按键拦截
- Android 模拟Home按键
- Android屏蔽Home按键
- Android 按键屏蔽, Back, Home....
- Android 监听Back、Home按键
- Android监听Home按键消息
- Android 物理按键的监听Back,Menu和音量(不包括home键,锁屏键,以及长按菜单的监听
- Android SurfaceView运行机制详解—剖析Back与Home按键及切入后台等异常处理!
- 第二周项目2—程序的多文件组织
- Java虚拟机的什么周期
- js跨域问题的解决
- HTTP协议详解(经典)
- C++ 学习笔记(六):高级编程:模板,预处理器,信号处理,多线程,Web编程
- Android Home 长按键处理
- #252 – FlowDocument 自动调整文本流(FlowDocument Flows its Content Automatically)
- RxJava入门之生命周期管理
- iOS开发 地图:MKMapView控件的使用
- AndroidStudio下JNI开发(easy+1.0)之Logcat
- LED灯为什么用恒流源
- Java反射的概念
- 程序的多文件组织
- java模拟登录的一些问题