OpenHarmony子系统开发 - 电源管理(一)

OpenHarmony子系统开发 - 电源管理(一)

一、电源模式定制开发指导

概述

简介

OpenHarmony默认提供了电源模式(如正常模式、性能模式、省电模式、超级省电模式)的特性。但由于不同产品的部件存在差异,导致在同样场景下电源模式的配置需要也存在差异,为此,OpenHarmony提供了电源管理的定制方式,产品定制开发者可根据产品的设计规格来定制这些特性。

基本概念

OpenHarmony支持的可定制的电源模式如下,每种模式对应了不同的电源和性能策略模式。

  • 正常模式:默认的电源模式,无特殊需求的情况下,此模式下的系统亮度、灭屏时间,进入睡眠时间等均适合大部分用户的需要。

  • 性能模式:强调性能表现的电源模式,如增加系统亮度、关闭灭屏时间、防止进入睡眠等。

  • 省电模式:强调省电表现的电源模式,如降低系统亮度、缩短灭屏时间、缩短进入睡眠时间等。

  • 超级省电模式:强调超级省电表现的电源模式,如大幅降低系统亮度、大幅缩短灭屏时间,大幅缩短进入睡眠时间等。

约束与限制

产品定制的配置路径,需要根据配置策略决定。本开发指导中的定制路径以/vendor进行举例,请开发者根据具体的产品配置策略,修改定制路径。

开发指导

搭建环境

设备要求:

标准系统开发板,如DAYU200/Hi3516DV300开源套件。

环境要求:

Linux调测环境,相关要求和配置可参考《快速入门》。

开发步骤

本文以定制DAYU200的电源模式为例介绍电源模式的定制方法:

  1. vendor/hihope/rk3568下创建power_manager文件夹。

  2. 参考默认电源模式配置文件夹创建目标文件夹,并安装到//vendor/hihope/rk3568/power_manager,文件格式如下:

    复制代码
    profile
    ├── BUILD.gn
    ├── power_mode_config.xml
  3. 参考默认电源模式配置文件夹中的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为开启震动。

    以正常模式为例:

    复制代码
    <switch_proxy version="1">
        <proxy id="600">
            <switch id="101" value="10000"/>
            <switch id="102" value="0"/>
            <switch id="103" value="-1"/>
            <switch id="107" value="1"/>
            <switch id="115" value="30"/>
            <switch id="120" value="1"/>
        </proxy>
  4. 参考默认电源模式配置文件夹中的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" ]
    }
  5. 将编译目标添加到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"
    }
  6. 参考《快速入门》编译定制版本,编译命令如下:

    复制代码
    ./build.sh --product-name rk3568 --ccache
  7. 将定制版本烧录到DAYU200开发板中。

调测验证

  1. 开机后,先进入shell命令行:

    复制代码
    hdc shell
  2. 设置电源模式为正常模式,并验证。

    1. 执行下列命令,更改电源模式,使设备进入正常模式:

      复制代码
      power-shell setmode 600
    2. 成功进入正常模式:

      复制代码
      Set Mode: 600
      Set Mode Success!
    3. 执行下列命令,获取当前系统自动睡眠时间:

      复制代码
      hidumper -s 3301 -a -a
      
      -------------------------------[ability]-------------------------------
      
      
      ----------------------------------PowerManagerService---------------------------------
      POWER STATE DUMP:
      Current State: INACTIVE  Reason: 1  Time: 33227
      ScreenOffTime: Timeout=10000ms
      ······(省略其他,只显示系统自动睡眠时间的配置)
    4. 点亮屏幕,观察设备屏幕,10秒后灭屏,设置成功。

  3. 设置电源模式为省电模式,并验证。

    1. 执行下列命令,更改电源模式,使设备进入省电模式:

      复制代码
      power-shell setmode 601
    2. 成功进入省电模式:

      复制代码
      Set Mode: 601
      Set Mode Success!
    3. 执行下列命令,获取当前系统自动睡眠时间:

      复制代码
      hidumper -s 3301 -a -a
      
      -------------------------------[ability]-------------------------------
      
      
      ----------------------------------PowerManagerService---------------------------------
      POWER STATE DUMP:
      Current State: INACTIVE  Reason: 1  Time: 33227
      ScreenOffTime: Timeout=20000ms
      ······(省略其他,只显示系统自动睡眠时间的配置)
    4. 点亮屏幕,观察设备屏幕,20秒后灭屏,设置成功。

  4. 设置电源模式为性能模式,并验证。

    1. 执行下列命令,更改电源模式,使设备进入性能模式:

      复制代码
      power-shell setmode 602
    2. 成功进入性能模式:

      复制代码
      Set Mode: 602
      Set Mode Success!
    3. 执行下列命令,获取当前系统自动睡眠时间:

      复制代码
      hidumper -s 3301 -a -a
      
      -------------------------------[ability]-------------------------------
      
      
      ----------------------------------PowerManagerService---------------------------------
      POWER STATE DUMP:
      Current State: INACTIVE  Reason: 1  Time: 33227
      ScreenOffTime: Timeout=30000ms
      ······(省略其他,只显示系统自动睡眠时间的配置)
    4. 点亮屏幕,观察设备屏幕,30秒后灭屏,设置成功。

  5. 设置电源模式为超级省电模式,并验证。

    1. 执行下列命令,更改电源模式,使设备进入超级省电模式:

      复制代码
      power-shell setmode 603
    2. 成功进入超级省电模式:

      复制代码
      Set Mode: 603
      Set Mode Success!
    3. 执行下列命令,获取当前系统自动睡眠时间:

      复制代码
      hidumper -s 3301 -a -a
      
      -------------------------------[ability]-------------------------------
      
      
      ----------------------------------PowerManagerService---------------------------------
      POWER STATE DUMP:
      Current State: INACTIVE  Reason: 1  Time: 33227
      ScreenOffTime: Timeout=40000ms
      ······(省略其他,只显示系统自动睡眠时间的配置)
    4. 点亮屏幕,观察设备屏幕,40秒后灭屏,设置成功。

参考

开发过程中可参考的配置文件路径:系统默认电源模式配置源码路径

默认配置

打包路径:/system/etc/power_config/power_mode_config.xml

二、电源默认休眠行为定制开发指导

概述

简介

当前OpenHarmony灭屏后会启动运行锁循环检测线程,然后默认进入休眠状态。不同设备的灭屏方式不相同,可能为合盖灭屏、超时灭屏、盖屏灭屏或是按电源键灭屏等;灭屏后的默认行为也不相同,可能为无动作、将屏幕下电,或是进入休眠状态等。为此,OpenHarmony提供电源默认休眠行为的定制方式,产品可以根据具体的设计规格来定制此特性。

约束与限制

配置策略: 产品定制的配置路径,需要根据配置策略决定。本开发指导中的定制路径以/vendor进行举例,请开发者根据具体的产品配置策略,修改定制路径。

开发指导

搭建环境

设备要求:

标准系统开发板,如DAYU200/Hi3516DV300开源套件。

环境要求:

Linux调测环境,相关要求和配置可参考《快速入门

开发步骤

本文以DAYU200为例介绍电源默认休眠行为的定制方法。

  1. 在产品目录/vendor/hihope/rk3568下创建power_manager文件夹。

  2. 参考电源管理服务组件中的电源默认休眠行为配置文件夹创建目标文件夹,并安装到/vendor/hihope/rk3568/power_manager目录下,文件格式如下:

    复制代码
    profile
    ├── BUILD.gn
    ├── power_suspend.json
  3. 编写定制的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 关机
  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,以实现后续编译
    }
  5. 将编译目标添加到/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"为编译目标。

  6. 参考《快速入门》编译定制版本,编译命令如下:

    复制代码
    ./build.sh --product-name rk3568 --ccache
  7. 将定制版本烧录到DAYU200开发板中。

调测验证

  1. 以新的休眠源配置文件为例,更改之后:

    复制代码
    {
        "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
        }
    }
  2. 开机后,点击电源按键。

    设备进入关机状态。

  3. 再次开机后等待一段时间。

    设备进入黑屏状态。

相关推荐
ws20190710 小时前
变革前夜:AUTO TECH China 2026 将展示汽车供应链的深度重构
人工智能·科技·重构·汽车
深科信项目申报助手10 小时前
2026年高新技术企业申报细则
大数据·人工智能·经验分享·其他
BB8=_=NiMotion10 小时前
一体式伺服电机在挪车机器人的应用
人工智能
光锥智能10 小时前
买即梦送豆包?拆解字节AI收费的密码
人工智能
北京宇音天下10 小时前
骑行升级!VTX316语音合成芯片,让电动车秒变“智能出行伙伴”
人工智能·语音识别
ishangy10 小时前
智慧港口人员作业安全模块AI视觉解决方案
人工智能·ai视觉解决方案·智慧港口·ai监控
wltx168810 小时前
谷歌SEO如何做插床优化?
大数据·人工智能·python
05大叔10 小时前
文本匹配任务
人工智能
DavidSoCool10 小时前
Spring AI Alibaba ReactAgent 调用Tool 实现多轮对话
java·人工智能·spring·多轮对话·reactagent
Tassel_YUE11 小时前
小米 MiMo 百万亿 Token 活动怎么申请?逐步填写指南 + 高额度申请思路
人工智能·ai