• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 锁屏管理服务
2
3## 简介
4### 内容介绍
5锁屏管理服务是OpenHarmony中系统服务,为锁屏应用提供注册亮屏、灭屏、开启屏幕、结束休眠、退出动画、请求解锁结果监听,并提供回调结果给锁屏应用。锁屏管理服务向三方应用提供请求解锁、查询锁屏状态、查询是否设置锁屏密码的能力。
6
7**图 1** 架构图
8
9![](figures/subsystem_architecture_zh.png "子系统架构图")
10
11### 框架图介绍
121.三方应用支持操作请求解锁、查询锁屏状态、查询是否设置锁屏密码接口调用。\
132.锁屏应用注册亮屏、灭屏、开启屏幕、结束休眠、退出动画、请求解锁结果监听等事件 \
143.框架层API用来处理三方应用和锁屏应用的js接口请求处理,NAPI层进行js调用的处理 \
154.框架层IDL用来处理NAPI接口向锁屏管理服务之间的桥梁,进行IPC通讯 \
165.锁屏管理服务用来处理三方应用和锁屏应用接口请求,并作出对应处理,提供相应的返回结果。
17
18## 目录
19
20```
21/base/miscservices/screenlock
22├── figures                  # 构架图
23├── frameworks/kitsimpl      # 对应用提供的接口
24├── interfaces/kits          # 组件对外提供的接口代码
25│   ├── jskits               # 服务间接口
26│   └── napi                 # js接口解析成napi接口
27├── sa_profile               # 组件包含的系统服务的配置文件和进程的配置文件
28├── services                 # 锁屏管理服务实现
29├── test                     # 接口的单元测试
30└── utils                    # 组件包含日志打印和有序公共事件定义的常量
31```
32## JS 接口说明
33
34| 接口名                      | 描述                       |
35| -------------------------- | -------------------------- |
36| isScreenLocked(callback: AsyncCallback<boolean>): void; | 判断屏幕是否锁屏,callback方式 |
37| isScreenLocked(): Promise<boolean>; | 判断屏幕是否锁屏,Promise方式 |
38| isSecureMode(callback: AsyncCallback<boolean>): void; | 判断当前设备的屏幕锁定是否安全(安全屏幕锁定意味着解锁屏幕需要密码、图案或其他用户身份识别),callback方式 |
39| isSecureMode(): Promise<boolean>; | 判断当前设备的屏幕锁定是否安全(安全屏幕锁定意味着解锁屏幕需要密码、图案或其他用户身份识别),Promise方式 |
40| unlockScreen(callback: AsyncCallback<void>): void; | 三方应用解锁屏幕,callback方式 |
41| unlockScreen(): Promise<void>; | 三方应用解锁屏幕,Promise方式 |
42| on(type: 'beginWakeUp' , callback: Callback<void>): void; | 锁屏应用注册开始唤醒监听事件 |
43| on(type: 'endWakeUp' , callback: Callback<void>): void; | 锁屏应用注册结束唤醒监听事件 |
44| on(type: 'beginScreenOn' , callback: Callback<void>): void; | 锁屏应用注册开始亮屏监听事件 |
45| on(type: 'endScreenOn' , callback: Callback<void>): void; | 锁屏应用注册结束亮屏监听事件 |
46| on(type: 'beginScreenOff' , callback: Callback<void>): void; | 锁屏应用注册开始灭屏监听事件 |
47| on(type: 'endScreenOff' , callback: Callback<void>): void; | 锁屏应用注册结束灭屏监听事件 |
48| on(type: 'unlockScreen' , callback: Callback<void>): void; | 锁屏应用注册请求解锁监听事件 |
49| on(type: 'beginExitAnimation' , callback: Callback<void>): void; | 锁屏应用注册开始退场监听事件 |
50| on(type: 'systemReady' , callback: Callback<void>): void; | 锁屏应用注册锁屏管理服务系统准备完成监听事件 |
51| on(type: 'beginSleep' , callback: Callback<number>): void; | 锁屏应用注册开始休眠监听事件 |
52| on(type: 'endSleep' , callback: Callback<number>): void; | 锁屏应用注册结束休眠监听事件 |
53| on(type: 'changeUser', callback: Callback<number>): void; | 锁屏应用注册切换用户监听事件 |
54| on(type: 'screenlockEnabled', callback: Callback<boolean>): void; | 锁屏应用注册锁屏是否启用监听事件 |
55| off(type: 'beginWakeUp' , callback: Callback<void>): void; | 锁屏应用取消开始唤醒监听事件 |
56| off(type: 'endWakeUp' , callback: Callback<void>): void; | 锁屏应用取消结束唤醒监听事件 |
57| off(type: 'beginScreenOn' , callback: Callback<void>): void; | 锁屏应用取消开始亮屏监听事件 |
58| off(type: 'endScreenOn' , callback: Callback<void>): void; | 锁屏应用取消结束亮屏监听事件 |
59| off(type: 'beginScreenOff' , callback: Callback<void>): void; | 锁屏应用取消开始灭屏监听事件 |
60| off(type: 'endScreenOff' , callback: Callback<void>): void; | 锁屏应用取消结束灭屏监听事件 |
61| off(type:  'unlockScreen' , callback: Callback<void>): void; | 锁屏应用取消请求解锁监听事件 |
62| off(type:  'beginExitAnimation' , callback: Callback<void>): void; | 锁屏应用取消开始退场监听事件 |
63| off(type: 'systemReady', callback: Callback<void>): void; | 锁屏应用取消锁屏管理服务系统准备完成监听事件 |
64| off(type: 'beginSleep' , callback: Callback<number>): void;<boolean>): void; | 锁屏应用取消开始休眠监听事件 |
65| off(type: 'endSleep' , callback: Callback<number>): void;<boolean>): void; | 锁屏应用取消结束休眠监听事件 |
66| off(type: 'changeUser', callback: Callback<number>): void;<boolean>): void; | 锁屏应用取消切换用户监听事件 |
67| off(type: 'screenlockEnabled', callback: Callback<boolean>): void; | 锁屏应用取消锁屏是否启用监听事件 |
68| sendScreenLockEvent(event: String, parameter: number, callback: AsyncCallback<boolean>): void; | 锁屏应用给锁屏管理服务发送事件,callback方式 |
69| sendScreenLockEvent(event: String, parameter: number): Promise<boolean>; | 锁屏应用给锁屏管理服务发送事件,promise方式 |
70
71## JS 接口使用示例
72
73```js
74导入模块
75import screenLock from '@ohos.screenlock';
76
77查询屏幕状态接口说明: 三方应用向锁屏管理服务进行查询屏幕锁屏状态
78//Promise方式,在异步回调里面获取锁屏状态结果
79screenLock.isScreenLocked()
80    .then((value) => {
81        //异步回调打印查询锁屏状态的结果
82        console.log(`success to screenLock.isScreenLocked: ${value}`);
83    }).catch((err) => {
84        //打印错误信息
85        console.error(`failed to screenLock.isScreenLocked because ${err.message}`)
86});
87```
88
89 ```js
90 //callback方式,在异步回调里面获取锁屏状态结果
91screenLock.isScreenLocked((err, value) => {
92    if (err) {
93        //打印错误信息
94        console.error(`failed to screenLock.isScreenLocked because ${err.message}`);
95        return;
96        }
97    //打印查询锁屏状态的结果
98    console.log(`success to screenLock.isScreenLocked: ${value}`);
99});
100```
101
102锁屏应用注册事件说明:锁屏应用向锁屏管理服务注册相关监听事件
103
104事件类型beginWakeUp示例代码如下
105 ```js
106var eventType = "beginWakeUp";
107screenLock.on(eventType, (err, value) => {
108    if (err) {
109        // 接口调用失败,打印错误信息
110        console.error(`screenlockOn_unlockScreen_callback failed, because ${err.message}`);
111        return;
112    }
113    // 接口调用成功,打印返回信息
114    console.log(`screenlockOn_unlockScreen_callback success to ${value} `);
115});
116 ```
117
118三方应用向锁屏管理服务发起解锁屏幕请求
119 ```js
120//三方应用callback方式调用请求解锁
121screenLock.unlockScreen((err, data) => {
122    console.log("Screenlock_Test_2300: send unlockScreen issue begin");
123    if (err) {
124    // 接口调用失败,打印错误信息
125    console.log("Screenlock_Test_2300: unlockScreen fail-->"+err);
126    return;
127    }
128    // 接口调用成功,打印返回信息
129    console.log("Screenlock_Test_2300: unlockScreen success-->"+data);
130});
131
132screenLock.unlockScreen().then((data) => {
133    // 接口调用成功,打印返回信息
134    console.log("ScreenLock_Test_Promise_0500: unlockScreen success-->"+data);
135}).catch((error) => {
136    // 接口调用失败,打印错误信息
137    console.error("ScreenLock_Test_Promise_0500: unlockScreen fail--> " + error);
138});
139```
140
141## 相关仓
142
143**Misc软件服务子系统**
144
145 miscservices_screenlock
146