IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> RK3568 Android12 长按power键功能设置 -> 正文阅读

[移动开发]RK3568 Android12 长按power键功能设置

Platform: RK3568
OS: Android 12
Kernel: v4.19.206
SDK Version:android-12.0-mid-rkr1


问题

在测试Android12时发现,长按power键没有反应。对比Android11,是会弹出关机菜单,有emergency,power off和 reboot 这几个选项。

解决方案

frameworks/base/core/res/res/values/config.xml 中修改config_longPressOnPowerBehavior的属性值

简单分析

查了下这应该是Android12的新特性,长按关机默认功能是唤醒Google Assistant,我的机器中没有预装该应用所以就没有任何反应。
可以在Settings——System——Gestures——Press and hold power button中关闭Hold for Assistant功能,关闭后测试长按power键是可以直接关机,但没有出现任何提示。这样也不太好,最好是能和Android11的效果类似。

跟下settings源码

packages/apps/Settings/src/com/android/settings/gestures/LongPressPowerButtonPreferenceController.java

可以看到getSummary() 的显示是根据getPowerButtonValue() 的值来判断的

@Override
    public CharSequence getSummary() {
        final int powerButtonValue = getPowerButtonValue();
        if (powerButtonValue == LONG_PRESS_POWER_ASSISTANT_VALUE) {
            return mContext.getString(R.string.power_menu_summary_long_press_for_assist_enabled);
        } else if (powerButtonValue == LONG_PRESS_POWER_GLOBAL_ACTIONS) {
            return mContext.getString(
                    R.string.power_menu_summary_long_press_for_assist_disabled_with_power_menu);
        } else {
            return mContext.getString(
                    R.string.power_menu_summary_long_press_for_assist_disabled_no_action);
        }   
    }   

getPowerButtonValue() 是获取POWER_BUTTON_LONG_PRESS_DEFAULT_VALUE_RESOURCE的值

private int getPowerButtonValue() {
        return Settings.Global.getInt(mContext.getContentResolver(),
                POWER_BUTTON_LONG_PRESS_SETTING,
                mContext.getResources().getInteger(POWER_BUTTON_LONG_PRESS_DEFAULT_VALUE_RESOURCE));
    }   
/**
     * Value used for long press power button behaviour when the Assist setting is disabled.
     * If this value matches Assist setting, then it falls back to Global Actions panel or
     * power menu, depending on their respective settings.
*/
private static final int POWER_BUTTON_LONG_PRESS_DEFAULT_VALUE_RESOURCE =
    com.android.internal.R.integer.config_longPressOnPowerBehavior;

这边可以看到最终是获取 config_longPressOnPowerBehavior 的属性值,该属性值是在frameworks/base/core/res/res/values/config.xml中定义,各个值代表的含义已注释得很明确了

<!-- Control the behavior when the user long presses the power button.
            0 - Nothing
            1 - Global actions menu
            2 - Power off (with confirmation)
            3 - Power off (without confirmation)
            4 - Go to voice assist
            5 - Go to assistant (Settings.Secure.ASSISTANT)
    -->
    <integer name="config_longPressOnPowerBehavior">5</integer>

测试属性设置为1,长按power键,出现如下界面,类似Android11的效果了

请添加图片描述

属性设置为2,长按power键,出现如下关机确认界面
请添加图片描述

这两个属性配置基本可以满足需求,问题解决

参考资料

https://baijiahao.baidu.com/s?id=1717361143132016535&wfr=spider&for=pc

https://segmentfault.com/a/1190000023222360?utm_source=tag-newest


如有谬误欢迎指正,感谢阅读~

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-01-28 12:02:03  更:2022-01-28 12:02:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 12:37:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码