OpenHarmony默认提供了电源模式(如正常模式、性能模式、省电模式、超级省电模式)的特性。但由于不同产品的部件存在差异,导致在同样场景下电源模式的配置需要也存在差异,为此,OpenHarmony提供了电源管理的定制方式,产品定制开发者可根据产品的设计规格来定制这些特性。
OpenHarmony支持的可定制的电源模式如下,每种模式对应了不同的电源和性能策略模式。
正常模式:默认的电源模式,无特殊需求的情况下,此模式下的系统亮度、灭屏时间,进入睡眠时间等均适合大部分用户的需要。
性能模式:强调性能表现的电源模式,如增加系统亮度、关闭灭屏时间、防止进入睡眠等。
省电模式:强调省电表现的电源模式,如降低系统亮度、缩短灭屏时间、缩短进入睡眠时间等。
超级省电模式:强调超级省电表现的电源模式,如大幅降低系统亮度、大幅缩短灭屏时间,大幅缩短进入睡眠时间等。
产品定制的配置路径,需要根据配置策略决定。本开发指导中的定制路径以/vendor
进行举例,请开发者根据具体的产品配置策略,修改定制路径。
设备要求:
标准系统开发板,如DAYU200/Hi3516DV300开源套件。
环境要求:
Linux调测环境,相关要求和配置可参考《快速入门》。
本文以定制DAYU200的电源模式为例介绍电源模式的定制方法:
在vendor/hihope/rk3568下创建power_manager文件夹。
参考默认电源模式配置文件夹创建目标文件夹,并安装到//vendor/hihope/rk3568/power_manager,文件格式如下:
profile
├── BUILD.gn
├── power_mode_config.xml
参考默认电源模式配置文件夹中的power_mode_config.xml编写定制的power_mode_config.xml:
proxy节点的说明是电源模式:
表1 proxy节点说明
电源模式 | ID |
---|---|
正常模式 | 600 |
省电模式 | 601 |
性能模式 | 602 |
超级省电模式 | 603 |
switch节点的说明是配置项:
表2 switch节点说明
配置项 | ID | 取值范围 |
---|---|---|
灭屏时间 | 101 | value是时长,为整数,value>=-1, 单位为毫秒(ms),-1为关闭灭屏功能。 |
系统自动睡眠时间 | 102 | value是时长,为整数,value>=-1, 单位为毫秒(ms),-1为关闭系统自动睡眠功能。 |
自动调节亮度 | 103 | value为是否开启,取值范围: -1为关闭自动调节亮度功能, 1为开启自动调节亮度功能。 |
自动调节屏幕旋转 | 107 | value为是否开启,取值范围: -1为关闭自动调节屏幕旋转, 1为开启自动调节屏幕旋转。 |
系统亮度 | 115 | value是亮度,为整数,取值范围:0~255。 |
震动开关 | 120 | value为是否开启,取值范围: -1为关闭震动, 1为开启震动。 |
以正常模式为例:
参考默认电源模式配置文件夹中的BUILD.gn编写BUILD.gn文件,将power_mode_config.xml打包到 /vendor/etc/power_config
目录下,例如:
import("//base/powermgr/power_manager/powermgr.gni")
import("//build/ohos.gni")
## Install vendor power_mode_config.xml to /vendor/etc/power_config/power_mode_config.xml
ohos_prebuilt_etc("power_mode_config_vendor") { # 自定义名称,例子中用名:power_mode_config_vendor
source = "power_mode_config.xml"
relative_install_dir = "power_config"
install_images = [ chipset_base_dir ] # 安装到vendor目录下的必要配置,chipset_base_dir = "vendor", 如果不配置,默认安装到system目录
part_name = "${product_rk3568}" # part_name为product_rk3568,以实现后续编译
}
group("power_service_config") {
deps = [ ":power_mode_config_vendor" ]
}
将编译目标添加到rk3568默认的ohos.build的"module_list"中,例如:
{
"parts": {
"product_rk3568": {
"module_list": [
"//vendor/hihope/rk3568/default_app_config:default_app_config",
"//vendor/hihope/rk3568/image_conf:custom_image_conf",
"//vendor/hihope/rk3568/power_manager/profile:power_mode_config_vendor", # 添加power_mode_config_vendor的编译。
"//vendor/hihope/rk3568/preinstall-config:preinstall-config",
"//vendor/hihope/rk3568/resourceschedule:resourceschedule",
"//vendor/hihope/rk3568/etc:product_etc_conf"
]
}
},
"subsystem": "product_hihope"
}
参考《快速入门》编译定制版本,编译命令如下:
./build.sh --product-name rk3568 --ccache
将定制版本烧录到DAYU200开发板中。
开机后,先进入shell命令行:
hdc shell
设置电源模式为正常模式,并验证。
执行下列命令,更改电源模式,使设备进入正常模式:
power-shell setmode 600
成功进入正常模式:
Set Mode: 600
Set Mode Success!
执行下列命令,获取当前系统自动睡眠时间:
hidumper -s 3301 -a -a
-------------------------------[ability]-------------------------------
----------------------------------PowerManagerService---------------------------------
POWER STATE DUMP:
Current State: INACTIVE Reason: 1 Time: 33227
ScreenOffTime: Timeout=10000ms
······(省略其他,只显示系统自动睡眠时间的配置)
点亮屏幕,观察设备屏幕,10秒后灭屏,设置成功。
设置电源模式为省电模式,并验证。
执行下列命令,更改电源模式,使设备进入省电模式:
power-shell setmode 601
成功进入省电模式:
Set Mode: 601
Set Mode Success!
执行下列命令,获取当前系统自动睡眠时间:
hidumper -s 3301 -a -a
-------------------------------[ability]-------------------------------
----------------------------------PowerManagerService---------------------------------
POWER STATE DUMP:
Current State: INACTIVE Reason: 1 Time: 33227
ScreenOffTime: Timeout=20000ms
······(省略其他,只显示系统自动睡眠时间的配置)
点亮屏幕,观察设备屏幕,20秒后灭屏,设置成功。
设置电源模式为性能模式,并验证。
执行下列命令,更改电源模式,使设备进入性能模式:
power-shell setmode 602
成功进入性能模式:
Set Mode: 602
Set Mode Success!
执行下列命令,获取当前系统自动睡眠时间:
hidumper -s 3301 -a -a
-------------------------------[ability]-------------------------------
----------------------------------PowerManagerService---------------------------------
POWER STATE DUMP:
Current State: INACTIVE Reason: 1 Time: 33227
ScreenOffTime: Timeout=30000ms
······(省略其他,只显示系统自动睡眠时间的配置)
点亮屏幕,观察设备屏幕,30秒后灭屏,设置成功。
设置电源模式为超级省电模式,并验证。
执行下列命令,更改电源模式,使设备进入超级省电模式:
power-shell setmode 603
成功进入超级省电模式:
Set Mode: 603
Set Mode Success!
执行下列命令,获取当前系统自动睡眠时间:
hidumper -s 3301 -a -a
-------------------------------[ability]-------------------------------
----------------------------------PowerManagerService---------------------------------
POWER STATE DUMP:
Current State: INACTIVE Reason: 1 Time: 33227
ScreenOffTime: Timeout=40000ms
······(省略其他,只显示系统自动睡眠时间的配置)
点亮屏幕,观察设备屏幕,40秒后灭屏,设置成功。
开发过程中可参考的配置文件路径:系统默认电源模式配置源码路径
默认配置
打包路径:/system/etc/power_config/power_mode_config.xml
当前OpenHarmony灭屏后会启动运行锁循环检测线程,然后默认进入休眠状态。不同设备的灭屏方式不相同,可能为合盖灭屏、超时灭屏、盖屏灭屏或是按电源键灭屏等;灭屏后的默认行为也不相同,可能为无动作、将屏幕下电,或是进入休眠状态等。为此,OpenHarmony提供电源默认休眠行为的定制方式,产品可以根据具体的设计规格来定制此特性。
配置策略: 产品定制的配置路径,需要根据配置策略决定。本开发指导中的定制路径以/vendor
进行举例,请开发者根据具体的产品配置策略,修改定制路径。
设备要求:
标准系统开发板,如DAYU200/Hi3516DV300开源套件。
环境要求:
Linux调测环境,相关要求和配置可参考《快速入门》
本文以DAYU200为例介绍电源默认休眠行为的定制方法。
在产品目录/vendor/hihope/rk3568
下创建power_manager文件夹。
参考电源管理服务组件中的电源默认休眠行为配置文件夹创建目标文件夹,并安装到/vendor/hihope/rk3568/power_manager
目录下,文件格式如下:
profile
├── BUILD.gn
├── power_suspend.json
编写定制的power_suspend.json,定制后的电源默认休眠行为示例如下:
{
"powerkey": {
"action": 1,
"delayMs": 0
},
"timeout": {
"action": 1,
"delayMs": 0
},
"lid": {
"action": 1,
"delayMs": 0
},
"switch": {
"action": 1,
"delayMs": 0
},
"tp_cover": {
"action": 1,
"delayMs": 0
}
}
表1 休眠源说明
休眠源 | 描述 |
---|---|
powerkey | 电源键灭屏 |
timeout | 超时灭屏 |
lid | 皮套灭屏 |
switch | 合盖灭屏 |
tp_cover | 盖屏灭屏 |
表2 休眠源配置说明
配置项 | 描述 |
---|---|
action | 执行动作,需配置具体枚举值数字,详细说明见下表。 |
delayMs | 延迟时间,单位毫秒。 |
表3 action说明
action | 取值 | 描述 |
---|---|---|
ACTION_NONE | 0 | 无动作 |
ACTION_AUTO_SUSPEND | 1 | 自动进入睡眠 |
ACTION_FORCE_SUSPEND | 2 | 强制进入睡眠 |
ACTION_HIBERNATE | 3 | 进入休眠 |
ACTION_SHUTDOWN | 4 | 关机 |
参考电源默认休眠行为的配置文件夹中的BUILD.gn编写BUILD.gn文件,将power_suspend.json打包到/vendor/etc/power_config
目录下,配置如下:
import("//build/ohos.gni") #引用build/ohos.gni
ohos_prebuilt_etc("suspend_config") {
source = "power_suspend.json"
relative_install_dir = "power_config"
install_images = [ chipset_base_dir ] #安装到vendor目录下的必要配置
part_name = "product_rk3568" #part_name为product_rk3568,以实现后续编译
}
将编译目标添加到/vendor/hihope/rk3568
目录下ohos.build的"module_list"中,例如:
{
"parts": {
"product_rk3568": {
"module_list": [
"//vendor/hihope/rk3568/default_app_config:default_app_config",
"//vendor/hihope/rk3568/image_conf:custom_image_conf",
"//vendor/hihope/rk3568/preinstall-config:preinstall-config",
"//vendor/hihope/rk3568/resourceschedule:resourceschedule",
"//vendor/hihope/rk3568/etc:product_etc_conf",
"//vendor/hihope/rk3568/power_manager/profile:suspend_config" //添加suspend_config的编译
]
}
},
"subsystem": "product_hihope"
}
“//vendor/hihope/rk3568/power_manager/”为文件夹路径,“profile”为创建的文件夹名字,“suspend_config”为编译目标。
参考《快速入门》编译定制版本,编译命令如下:
./build.sh --product-name rk3568 --ccache
将定制版本烧录到DAYU200开发板中。
以新的休眠源配置文件为例,更改之后:
{
"powerkey": {
"action": 4,
"delayMs": 0
},
"timeout": {
"action": 1,
"delayMs": 0
},
"lid": {
"action": 1,
"delayMs": 0
},
"switch": {
"action": 1,
"delayMs": 0
},
"tp_cover": {
"action": 1,
"delayMs": 0
}
}
开机后,点击电源按键。
设备进入关机状态。
再次开机后等待一段时间。
设备进入黑屏状态。