【鸿蒙南向开发】OpenHarmony源码解析之显示屏亮度获取功能

1 简介

显示能效管理组件是OpenHarmony电源管理子系统的一个组件,主要负责如下功能:

  1. 显示屏的亮/灭。
  2. 显示屏亮度调节。
  3. 显示屏亮度获取。

本文主要分析显示屏亮度获取功能,包括NAPI接口及功能实现的整个流程。

图1 电源管理子系统架构图

image.png

图2 显示能效管理组件架构图

image.png

2 显示能效管理组件代码目录

base/powermgr/display_manager
├── figures                  	# 架构图
├── frameworks                  # FrameWork层
│   ├── napi                  	# NAPI
│   └── native                  # Native层
├── interfaces                  # 接口层
│   ├── innerkits               # 内部 APIs
│   └── kits                    # 外部接口 APIs
├── sa_profile                  # SA 配置文件
├── service                    	# 服务层
│   ├── native                  # Native 层
│   └── zidl                    # zidl 接口层
├── test                        # 测试用例
└── utils                       # 工具和通用层

3 显示屏亮度获取整体流程

图3 显示屏亮度获取时序图

image.png

流程描述:

  1. JavaScript应用调用getValue获取显示屏亮度
  2. getValue调用brightness.cpp注册的NAPI接口GetValue,GetValue会将获取显示屏亮度委托给DisplayPowerMgrClient对象的GetBrightness方法
  3. GetBrightness首先获取显示服务代理端DisplayPowerMgrProxy对象,然后调用DisplayPowerMgrProxy的GetBrightness方法
  4. 显示服务代理端对象的GetBrightness方法调用SendRequest向显示服务提供方DisplayPowerMgrService发送获取屏幕亮度请求
  5. DisplayPowerMgrService通过父类DisplayPowerMgrStub的OnRemoteRequest方法收到获取屏幕亮度请求后,调用父类DisplayPowerMgrStub的GetBrightnessStub方法
  6. GetBrightnessStub继续调用DisplayPowerMgrService的GetBrightness方法
  7. GetBrightness根据设备id找到对应的ScreenController对象,然后调用ScreenController对象的GetBrightness方法
  8. ScreenController对象的GetBrightness方法调用ScreenAction对象的GetBrightness方法
  9. ScreenAction对象的GetBrightness方法调用DisplayManager的GetScreenBrightness操控底层硬件实现显示屏的亮度获取。

3.1 显示能效管理服务注册

  1. 调用System Ability的MakeAndRegisterAbility接口注册Display Power Manager Service实例
//rk3568/base/powermgr/display_manager/service/native/src/display_system_ability.cpp

REGISTER_SYSTEM_ABILITY_BY_ID(DisplaySystemAbility, DISPLAY_MANAGER_SERVICE_ID, true);

//rk3568/foundation/distributedschedule/safwk/interfaces/innerkits/safwk/syst
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值