在 Android 13 的定制开发过程中,我们遇到了一个特殊需求:硬件层面要求按下 Power 键时,系统不应执行标准的关屏操作(即不断开 mini 信号),而仅关闭屏幕背光。此外,当用户触摸屏幕时,需要能够唤醒屏幕并点亮背光。
实现步骤
1. 修改 Power 键短按策略
首先,我们需要修改系统对 Power 键短按的默认行为。在 Android 系统中,这一行为由 frameworks\base\core\res\res\values\config.xml 文件中的 config_shortPressOnPowerBehavior 参数控制。
修改前:
1 2 3 4 5 6 7 8 9
<!-- Control the behavior when the user short presses the power button. 0 - Nothing 1 - Go to sleep (doze) 2 - Really go to sleep (don't doze) 3 - Really go to sleep and go home (don't doze) 4 - Go to home 5 - Dismiss IME if shown. Otherwise go to home --> <integername="config_shortPressOnPowerBehavior">1</integer>
privatevoidpowerPress(long eventTime, int count, boolean beganFromNonInteractive) { // 原有代码省略... if (count == 1 && interactive && !beganFromNonInteractive) { if (mSideFpsEventHandler.onSinglePressDetected(eventTime)) { Slog.i(TAG, "Suppressing power key because the user is interacting with the " + "fingerprint sensor"); return; } switch (mShortPressOnPowerBehavior) { case SHORT_PRESS_POWER_NOTHING: switchBacklight(); // 调用新增的背光控制方法 break; // 其他 case 省略... } } // 原有代码省略... }
通过上述步骤,我们成功实现了 Android 13 下的 Power 键仅关闭背光且支持触摸唤醒的功能。具体来说,我们修改了 Power 键的短按策略,自定义了 Power 键的事件处理逻辑,并新增了背光与 MIPI 信号的控制方法。同时,我们还通过注册全局触摸事件监听器实现了触摸唤醒功能。这一解决方案满足了硬件层面的特殊需求,提升了用户体验。