#创作者激励#【坚果派-坚果】DAYU200关闭自动息屏的几种方式 原创

鸿蒙坚果派
发布于 2023-3-30 16:26
浏览
1收藏

【本文正在参加2023年第一期优质创作者激励计划】

DAYU200关闭自动息屏的几种方式

梁开祝 2023.03.01
欢迎通过主页或者私信联系我,加入坚果派,一起学习鸿蒙应用开发。

由于OpenHarmony的电源管理策略的配置,DAYU200开发板在默认情况下,开机后30秒会自动息屏,频繁的自动息屏会让不少小伙伴感到麻烦,下面汇总关闭DAYU200开发板自动息屏的几种方式供大家选择使用。

0. 电源管理策略概述

OpenHarmony标准系统的统一电源管理策略配置,见 //base/powermgr/power_manager/services/native/profile/power_mode_config.xml 文件,不同的配置对应不同的功耗情况。

<!--
    Power Mode Definitions:        // 电源模式定义
    MODE_NORMAL = 600,             // 正常模式
    MODE_POWER_SAVE = 601,         // 省电模式
    MODE_PERFORMANCE = 602,        // 性能优先
    MODE_EXTREME_POWER_SAVE = 603, // 超级省电
-->
<!--
    Action Definitions:         // 行为定义
    DisplayOffTime = 101,       // 息屏时间控制
    SystemAutoSleepTime = 102,  // 系统自动睡眠时间控制
    AutoAdjustBrightness = 103, // 亮度自动调整时间控制
    AutoWindowRotation = 107,   // 窗口自动旋转时间控制
    SystemBrightness = 115,     // 系统亮度调节
    VibratorsState = 120,       // 马达(震动)状态
-->
<switch_proxy version="1">
    <proxy id="600">
        <!-- value[单位:ms],-1表示不设置,如DisplayOffTime设为-1表示不息屏 -->
        <switch id="101" value="30000" recover_flag="0"/>
        <switch id="102" value="0" recover_flag="0"/>
        <switch id="103" value="-1" recover_flag="0"/>
        <switch id="107" value="1" recover_flag="0"/>
        <switch id="115" value="102" recover_flag="0"/>
        <switch id="120" value="1" recover_flag="0"/>
    </proxy>
    <proxy id="601">
        <switch id="101" value="10000" recover_flag="0"/>
        <switch id="102" value="5000" recover_flag="0"/>
        <switch id="103" value="-1" recover_flag="0"/>
        <switch id="107" value="-1" recover_flag="0"/>
        <switch id="115" value="50" recover_flag="0"/>
        <switch id="120" value="-1" recover_flag="0"/>
    </proxy>
    <proxy id="602">
        <switch id="101" value="-1" recover_flag="0"/>
        <switch id="102" value="-1" recover_flag="0"/>
        <switch id="103" value="-1" recover_flag="0"/>
        <switch id="107" value="1" recover_flag="0"/>
        <switch id="115" value="255" recover_flag="0"/>
        <switch id="120" value="1" recover_flag="0"/>
    </proxy>
    <proxy id="603">
        <switch id="101" value="5000" recover_flag="0"/>
        <switch id="102" value="1000" recover_flag="0"/>
        <switch id="103" value="-1" recover_flag="0"/>
        <switch id="107" value="-1" recover_flag="0"/>
        <switch id="115" value="25" recover_flag="0"/>
        <switch id="120" value="-1" recover_flag="0"/>
    </proxy>
</switch_proxy>

1. 手动解除息屏

开发板息屏后,手动按一下 ”POWER“ 按键即可点亮屏幕,点亮屏幕后,30秒又会自动息屏。

这个方法容易误按到 “RESET” 键而重启开发板,比较麻烦。

2. 修改电源模式

开发板上电后,可以通过shell执行:

power-shell setmode 602

或者通过 hdc shell 执行:

hdc shell power-shell setmode 602

执行成功后,会打印出:

Set Mode: 602
Set Mode Success!

即表示系统的电源配置模式已经切换到编号为602的性能优先模式,开发板将不会自动息屏了。

不过这个修改电源模式的结果不保存,会在系统重启后恢复默认的正常模式,需要再次执行 power-shell 命令进行设置。

power-shell 的实现代码见://base/powermgr/power_manager/utils/shell/

3. hdc 推送电源配置到开发板

首先本地复制一份 power_mode_config.xml 文件,将电源管理中的 101 项的value值改为 -1, 保存备用。

3.1 方法1

将上述修改后的 power_mode_config.xml 文件复制到U盘根目录下,再将U盘插入DAYU200开发板。

开发板开机后,可以查看块设备信息:

ls /dev/block
......
loop1      loop7    mmcblk0p11    mmcblk0p6  sda
loop2      mmcblk0  mmcblk0p12    mmcblk0p7  sda1

可以看到 sda1 就是插入开发板的U盘,可以创建挂载点并挂载U盘到 /mnt/udisk :

# 创建U盘挂载点,挂载U盘,并查看U盘上的内容
mkdir /mnt/udisk
mount -t vfat /dev/block/sda1 /mnt/udisk
ls /mnt/udisk

# 默认 /vendor 分区是只读的,重新以rw模式挂载该分区
# 再将U盘中的 power_mode_config.xml 文件复制到开发板中 /vendor/etc/power_config/ 目录下
# 最后确认该文件的内容与是自己修改的内容
mount -o rw,remount /vendor
cp -r /mnt/udisk/power_config /vendor/etc/
ls /vendor/etc/
ls /vendor/etc/power_config/
cat /vendor/etc/power_config/power_mode_config.xml

之后,重启开发板就可以了。

系统会读取和解析该文件,在默认的正常模式不再息屏。

3.2 方法2

windows下通过hdc工具连接开发板,将修改后的 power_mode_config.xml 文件推送到开发板中即可。

# 默认 /vendor 分区是只读的,重新以rw模式挂载该分区
# 再将 power_mode_config.xml 文件推送到开发板中 /vendor/etc/power_config/ 目录下
# 最后确认该文件的内容与是自己修改的内容
mount -o rw,remount /vendor
hdc file send power_mode_config.xml /vendor/etc/power_config/

之后,重启开发板就可以了。

系统会读取和解析该文件,在默认的正常模式不再息屏。

王开发板中复制或者通过hdc推送 power_mode_config.xml 文件到开发板中这种方式,只要不重新烧录开发板的vendor分区,即使开关机开发板,效果都是持续的。

如果重新烧录了开发板的 vendor 分区,则会恢复到默认的30s自动息屏的效果。

4. 修改源代码

对于需要经常烧录开发板 vendor 分区的开发者,建议直接修改源代码,将上述修改后的 power_mode_config.xml 文件编译进vendor.img镜像中,即可保证每次烧录vendor镜像后,不息屏的效果仍能保持。

将上述修改后的 power_mode_config.xml 文件复制到 //vendor/hihope/rk3568/power_config/ 目录下即可,电源管理模块的相关脚本在编译阶段,识别到存在该文件,就会将其自动复制到vendor烧录镜像的对应目录下。

这里的修改只对rk3568这个开发板有效,对于其他运行标准系统的开发版,也可以参考这种办法进行修改。

如果想要一次性修改,对所有的标准系统项目都生效,那就直接去//base/…/目录下修改 power_mode_config.xml 文件即可。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
3
收藏 1
回复
举报
回复
    相关推荐