Android 13 拿起设备时唤醒和合盖灭屏冲突(与霍尔传感器功能冲突)

介绍

此设备是一个平板设备,有霍尔传感器,当磁吸盖关上时息屏,当拿起设备时唤醒功能开启时,磁吸盖关上还是会被唤醒,这样就导致设备待机时放在背包中会增加耗电,现在需要当磁吸盖合上的时候不允许设备被拿起唤醒。

分析

首先找到霍尔传感器是通过什么触发,这里我通过:

adb shell

getevent -l

发现合盖时触发了F11

打开时触发了F12 那我们的思路就是在 PhoneWindowManager.java中修改

修改

首先我们定义一个boolean值来保存霍尔传感器的触发状态默认为false,当合盖时设为true,这里我们找到手势唤醒的判断出shouldEnableWakeGestureLp(),其中mWakeGestureEnabledSetting就是拿起唤醒的boolean值,这里我们就判断,当拿起唤醒开启时且,合盖时我们让mWakeGestureEnabled为false,不让设备唤醒即可。

路径:frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java

    //*/soda water.20231226 hall state
    static boolean HALL_STATE = false;
    //*/



    private boolean shouldEnableWakeGestureLp() {
        //*/soda water.20231226 hall state
        boolean mWakeGestureEnabled = mWakeGestureEnabledSetting;
        if(mWakeGestureEnabled == true){
            if(HALL_STATE == true){
            mWakeGestureEnabled = false;
            }
        }
        //*/
        return mWakeGestureEnabled && !mDefaultDisplayPolicy.isAwake()
                && (getLidBehavior() != LID_BEHAVIOR_SLEEP
                || mDefaultDisplayPolicy.getLidState() != LID_CLOSED)
                && mWakeGestureListener.isSupported();
    }



    @Override
    public long interceptKeyBeforeDispatching(IBinder focusedToken, KeyEvent event,
            int policyFlags) {
            //......略
            case KeyEvent.KEYCODE_F11: {
                //*/soda water.20231226 hall state
                HALL_STATE = true;
                //*/
                result &= ~ACTION_PASS_TO_USER;
                isWakeKey = false;
                if (!mPowerManager.isInteractive()) {
                    useHapticFeedback = false; // suppress feedback if already non-interactive
                }
                if (down) {
                    sleepPress();
                } else {
                    sleepRelease(event.getEventTime());
                }
                break;
            }
            //*/soda water.20231226 hall state
            case KeyEvent.KEYCODE_F12: {
                HALL_STATE = false;
                result &= ~ACTION_PASS_TO_USER;
                break;
            }
            //*/
        }

    }

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不太正常的移动开发工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值