Android Home 长按键处理

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 home
private 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值