• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 设备使用信息统计
2
3本模块提供设备使用信息统计能力。
4
5设备使用信息统计,系统应用可调用接口实现如下功能:
6
7- 查询设备上各应用在不同时间段的使用时长、各应用的事件(前台、后台、长时任务开始、长时任务结束)信息及各应用的通知次数信息。
8- 查询系统事件(休眠、唤醒、解锁、锁屏)统计信息。
9- 查询应用分组信息(指定应用和自身应用)。
10- 查询应用空闲状态(指定应用和自身应用)。
11- 设置应用分组信息(指定应用)。
12- 注册和解除注册应用分组变化监听。
13
14三方应用可调用接口实现如下功能:
15
16- 查询应用空闲状态(仅限自身应用)。
17- 查询应用分组信息(仅限自身应用)。
18- 查询应用事件(仅限自身应用)。
19
20> ![icon-note.gif](public_sys-resources/icon-note.gif) **说明:**
21> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
22
23
24## 导入模块
25
26```
27import bundleState from '@ohos.bundleState'
28```
29
30## bundleState.isIdleState
31
32isIdleState(bundleName: string, callback: AsyncCallback<boolean>): void
33
34判断指定bundleName的应用当前是否是空闲状态,使用Callback形式返回。
35
36**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.AppGroup
37
38**参数**:
39
40| 参数名 | 类型 | 必填 | 说明 |
41| -------- | -------- | -------- | -------- |
42| bundleName | string | 是 | 应用的bundleName。|
43| callback | AsyncCallback<boolean> | 是 | 指定的callback回调方法。如果指定的bundleName有效,则返回指定bundleName的应用当前是否是空闲状态;否则返回null。 |
44
45**示例**:
46
47  ```
48    bundleState.isIdleState("com.ohos.camera", (err, res) => {
49        if (err) {
50            console.log('BUNDLE_ACTIVE isIdleState callback failed, because: ' + err.code);
51        } else {
52            console.log('BUNDLE_ACTIVE isIdleState callback succeeded, result: ' + JSON.stringify(res));
53        }
54    });
55  ```
56
57## bundleState.isIdleState
58
59isIdleState(bundleName: string): Promise<boolean>
60
61判断指定bundleName的应用当前是否是空闲状态,使用Promise形式返回。
62
63**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.AppGroup
64
65**参数**:
66
67| 参数名 | 类型 | 必填 | 说明 |
68| -------- | -------- | -------- | -------- |
69| bundleName | string | 是 | 应用的bundleName。|
70
71**返回值**:
72
73| 类型 | 说明 |
74| -------- | -------- |
75| Promise<boolean> | 指定的Promise回调方法。如果指定的bundleName有效,则返回指定bundleName的应用当前是否是空闲状态;否则返回null。 |
76
77**示例**:
78
79  ```
80    bundleState.isIdleState("com.ohos.camera").then(res => {
81        console.log('BUNDLE_ACTIVE isIdleState promise succeeded, result: ' + JSON.stringify(res));
82    }).catch(err => {
83        console.log('BUNDLE_ACTIVE isIdleState promise failed, because: ' + err.code);
84    });
85  ```
86
87## bundleState.queryAppUsagePriorityGroup
88
89queryAppUsagePriorityGroup(callback: AsyncCallback<number>): void
90
91查询(返回)当前调用者应用的使用优先级群组,使用Callback形式返回。
92
93**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.AppGroup
94
95**参数**:
96
97| 参数名 | 类型 | 必填 | 说明 |
98| -------- | -------- | -------- | -------- |
99| callback | AsyncCallback<number> | 是 | 指定的callback回调方法。返回当前调用者应用的使用优先级群组。|
100
101**示例**:
102
103  ```
104    bundleState.queryAppUsagePriorityGroup((err, res) => {
105        if (err) {
106            console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup callback failed. because: ' + err.code);
107        } else {
108            console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup callback succeeded. result: ' + JSON.stringify(res));
109        }
110    });
111  ```
112
113## bundleState.queryAppUsagePriorityGroup
114
115queryAppUsagePriorityGroup(): Promise<number>
116
117查询(返回)当前调用者应用的使用优先级群组,使用Promise形式返回。
118
119**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.AppGroup
120
121**返回值**:
122
123| 类型 | 说明 |
124| -------- | -------- |
125| Promise<number> | 指定的Promise回调方法。查询(返回)当前调用者应用的使用优先级群组。|
126
127**示例**:
128
129  ```
130    bundleState.queryAppUsagePriorityGroup().then(res => {
131        console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup promise succeeded. result: ' + JSON.stringify(res));
132    }).catch(err => {
133        console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup promise failed. because: ' + err.code);
134    });
135  ```
136
137## bundleState.queryBundleStateInfos
138
139queryBundleStateInfos(begin: number, end: number, callback: AsyncCallback<BundleActiveInfoResponse>): void
140
141通过指定起始和结束时间查询应用使用时长统计信息,使用Callback形式返回。
142
143**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO
144
145**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App
146
147**系统API**:此接口为系统接口,三方应用不支持调用。
148
149**参数**:
150
151| 参数名 | 类型 | 必填 | 说明 |
152| -------- | -------- | -------- | -------- |
153| begin | number | 是 | 起始时间。|
154| end | number | 是 | 结束时间。|
155| callback | AsyncCallback<[BundleActiveInfoResponse](#bundleactiveinforesponse)> | 是 | 指定的callback回调方法。返回指定起始和结束时间内应用使用时长统计信息。|
156
157**示例**:
158
159  ```
160    bundleState.queryBundleStateInfos(0, 20000000000000, (err, res) => {
161        if (err) {
162            console.log('BUNDLE_ACTIVE queryBundleStateInfos callback failed, because: ' + err.code);
163        } else {
164            console.log('BUNDLE_ACTIVE queryBundleStateInfos callback success.');
165            let i = 1;
166            for (let key in res) {
167                console.log('BUNDLE_ACTIVE queryBundleStateInfos callback number : ' + i);
168                console.log('BUNDLE_ACTIVE queryBundleStateInfos callback result ' + JSON.stringify(res[key]));
169                i++;
170            }
171        }
172    });
173  ```
174
175## bundleState.queryBundleStateInfos
176
177queryBundleStateInfos(begin: number, end: number): Promise<BundleActiveInfoResponse>
178
179通过指定起始和结束时间查询应用使用时长统计信息,使用Promise形式返回。
180
181**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO
182
183**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App
184
185**系统API**:此接口为系统接口,三方应用不支持调用。
186
187**参数**:
188
189| 参数名 | 类型 | 必填 | 说明 |
190| -------- | -------- | -------- | -------- |
191| begin | number | 是 | 起始时间。|
192| end | number | 是 | 结束时间。|
193
194**返回值**:
195
196| 类型 | 说明 |
197| -------- | -------- |
198| Promise<[BundleActiveInfoResponse](#bundleactiveinforesponse)> | 指定的Promise回调方法。返回指定起始和结束时间内应用使用时长统计信息。|
199
200**示例**:
201
202  ```
203    bundleState.queryBundleStateInfos(0, 20000000000000).then(res => {
204        console.log('BUNDLE_ACTIVE queryBundleStateInfos promise success.');
205        let i = 1;
206        for (let key in res) {
207            console.log('BUNDLE_ACTIVE queryBundleStateInfos promise number : ' + i);
208            console.log('BUNDLE_ACTIVE queryBundleStateInfos promise result ' + JSON.stringify(res[key]));
209            i++;
210        }
211    }).catch(err => {
212        console.log('BUNDLE_ACTIVE queryBundleStateInfos promise failed, because: ' + err.code);
213    });
214  ```
215
216## bundleState.queryBundleStateInfoByInterval
217
218queryBundleStateInfoByInterval(byInterval: IntervalType, begin: number, end: number, callback: AsyncCallback<Array<BundleStateInfo>>): void
219
220通过指定时间段间隔(天、周、月、年)查询应用使用时长统计信息,使用Callback形式返回。
221
222**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO
223
224**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App
225
226**系统API**:此接口为系统接口,三方应用不支持调用。
227
228**参数**:
229
230| 参数名 | 类型 | 必填 | 说明 |
231| -------- | -------- | -------- | -------- |
232| byInterval | [IntervalType](#intervaltype) | 是 | 查询类型。|
233| begin | number | 是 | 起始时间。|
234| end | number | 是 | 结束时间。|
235| callback | AsyncCallback<Array<[BundleStateInfo](#bundlestateinfo)>> | 是 | 指定的callback回调方法。返回指定时间段间隔(天、周、月、年)查询应用使用时长统计信息。|
236
237**示例**:
238
239  ```
240    bundleState.queryBundleStateInfoByInterval(0, 0, 20000000000000, (err, res) => {
241        if (err) {
242            console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval callback failed, because: ' + err.code);
243        } else {
244            console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval callback success.');
245            for (let i = 0; i < res.length; i++) {
246                console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval callback number : ' + (i + 1));
247                console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval callback result ' + JSON.stringify(res[i]));
248            }
249        }
250    });
251  ```
252
253## bundleState.queryBundleStateInfoByInterval
254
255queryBundleStateInfoByInterval(byInterval: IntervalType, begin: number, end: number): Promise&lt;Array&lt;BundleStateInfo&gt;&gt;
256
257通过指定时间段间隔(天、周、月、年)查询应用使用时长统计信息,使用Promise形式返回。
258
259**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO
260
261**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App
262
263**系统API**:此接口为系统接口,三方应用不支持调用。
264
265**参数**:
266
267| 参数名 | 类型 | 必填 | 说明 |
268| -------- | -------- | -------- | -------- |
269| byInterval | [IntervalType](#intervaltype) | 是 | 查询类型。|
270| begin | number | 是 | 起始时间。|
271| end | number | 是 | 结束时间。|
272
273**返回值**:
274
275| 类型 | 说明 |
276| -------- | -------- |
277| Promise&lt;Array&lt;[BundleStateInfo](#bundlestateinfo)&gt;&gt; | 指定的Promise回调方法。返回指定时间段间隔(天、周、月、年)查询应用使用时长统计信息。|
278
279**示例**:
280
281  ```
282    bundleState.queryBundleStateInfoByInterval(0, 0, 20000000000000).then(res => {
283        console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval promise success.');
284        for (let i = 0; i < res.length; i++) {
285            console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval promise number : ' + (i + 1));
286            console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval promise result ' + JSON.stringify(res[i]));
287        }
288    }).catch(err => {
289        console.log('BUNDLE_ACTIVE queryBundleStateInfoByInterval promise failed, because: ' + err.code);
290    });
291  ```
292
293## bundleState.queryBundleActiveStates
294
295queryBundleActiveStates(begin: number, end: number, callback: AsyncCallback&lt;Array&lt;BundleActiveState&gt;&gt;): void
296
297通过指定起始和结束时间查询所有应用的事件集合,使用Callback形式返回。
298
299**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO
300
301**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App
302
303**系统API**:此接口为系统接口,三方应用不支持调用。
304
305**参数**:
306
307| 参数名 | 类型 | 必填 | 说明 |
308| -------- | -------- | -------- | -------- |
309| begin | number | 是 | 起始时间。|
310| end | number | 是 | 结束时间。|
311| callback | AsyncCallback&lt;Array&lt;[BundleActiveState](#bundleactivestate)&gt;&gt; | 是 | 指定的callback回调方法。返回指定起始和结束时间查询所有应用的事件集合。|
312
313**示例**:
314
315  ```
316    bundleState.queryBundleActiveStates(0, 20000000000000, (err, res) => {
317        if (err) {
318            console.log('BUNDLE_ACTIVE queryBundleActiveStates callback failed, because: ' + err.code);
319        } else {
320            console.log('BUNDLE_ACTIVE queryBundleActiveStates callback success.');
321            for (let i = 0; i < res.length; i++) {
322                console.log('BUNDLE_ACTIVE queryBundleActiveStates callback number : ' + (i + 1));
323                console.log('BUNDLE_ACTIVE queryBundleActiveStates callback result ' + JSON.stringify(res[i]));
324            }
325        }
326    });
327  ```
328
329## bundleState.queryBundleActiveStates
330
331queryBundleActiveStates(begin: number, end: number): Promise&lt;Array&lt;BundleActiveState&gt;&gt;
332
333通过指定起始和结束时间查询所有应用的事件集合,使用Promise形式返回。
334
335**需要权限**:ohos.permission.BUNDLE_ACTIVE_INFO
336
337**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App
338
339**系统API**:此接口为系统接口,三方应用不支持调用。
340
341**参数**:
342
343| 参数名 | 类型 | 必填 | 说明 |
344| -------- | -------- | -------- | -------- |
345| begin | number | 是 | 起始时间。|
346| end | number | 是 | 结束时间。|
347
348**返回值**:
349
350| 类型 | 说明 |
351| -------- | -------- |
352| Promise&lt;Array&lt;[BundleActiveState](#bundleactivestate)&gt;&gt; | 指定的Promise回调方法。返回指定起始和结束时间查询所有应用的事件集合。|
353
354**示例**:
355
356  ```
357    bundleState.queryBundleActiveStates(0, 20000000000000).then(res => {
358        console.log('BUNDLE_ACTIVE queryBundleActiveStates promise success.');
359        for (let i = 0; i < res.length; i++) {
360            console.log('BUNDLE_ACTIVE queryBundleActiveStates promise number : ' + (i + 1));
361            console.log('BUNDLE_ACTIVE queryBundleActiveStates promise result ' + JSON.stringify(res[i]));
362        }
363    }).catch(err => {
364        console.log('BUNDLE_ACTIVE queryBundleActiveStates promise failed, because: ' + err.code);
365    });
366  ```
367
368## bundleState.queryCurrentBundleActiveStates
369
370queryCurrentBundleActiveStates(begin: number, end: number, callback: AsyncCallback&lt;Array&lt;BundleActiveState&gt;&gt;): void
371
372通过指定起始和结束时间查询当前应用的事件集合,使用Callback形式返回。
373
374**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App
375
376**参数**:
377
378| 参数名 | 类型 | 必填 | 说明 |
379| -------- | -------- | -------- | -------- |
380| begin | number | 是 | 起始时间。|
381| end | number | 是 | 结束时间。|
382| callback | AsyncCallback&lt;Array&lt;[BundleActiveState](#bundleactivestate)&gt;&gt; | 是 | 指定的callback回调方法。返回指定起始和结束时间查询当前应用的事件集合。|
383
384**示例**:
385
386  ```
387    bundleState.queryCurrentBundleActiveStates(0, 20000000000000, (err, res) => {
388        if (err) {
389            console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates callback failed, because: ' + err.code);
390        } else {
391            console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates callback success.');
392            for (let i = 0; i < res.length; i++) {
393                console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates callback number : ' + (i + 1));
394                console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates callback result ' + JSON.stringify(res[i]));
395             }
396        }
397    });
398  ```
399
400## bundleState.queryCurrentBundleActiveStates
401
402queryCurrentBundleActiveStates(begin: number, end: number): Promise&lt;Array&lt;BundleActiveState&gt;&gt;
403
404通过指定起始和结束时间查询当前应用的事件集合,使用Promise形式返回。
405
406**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App
407
408**参数**:
409
410| 参数名 | 类型 | 必填 | 说明 |
411| -------- | -------- | -------- | -------- |
412| begin | number | 是 | 起始时间。|
413| end | number | 是 | 结束时间。|
414
415**返回值**:
416
417| 类型 | 说明 |
418| -------- | -------- |
419| Promise&lt;Array&lt;[BundleActiveState](#bundleactivestate)&gt;&gt; | 指定的Promise回调方法。返回指定起始和结束时间查询当前应用的事件集合。|
420
421**示例**:
422
423  ```
424    bundleState.queryCurrentBundleActiveStates(0, 20000000000000).then(res => {
425        console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates promise success.');
426        for (let i = 0; i < res.length; i++) {
427            console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates promise number : ' + (i + 1));
428            console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates promise result ' + JSON.stringify(res[i]));
429        }
430    }).catch(err => {
431        console.log('BUNDLE_ACTIVE queryCurrentBundleActiveStates promise failed, because: ' + err.code);
432    });
433  ```
434
435## BundleStateInfo
436提供应用使用时长的具体信息。
437
438### 属性
439
440**系统能力**:以下各项对应的系统能力均为SystemCapability.ResourceSchedule.UsageStatistics.App
441
442| 参数名 | 类型 | 必填 | 说明 |
443| -------- | -------- | -------- | -------- |
444| bundleName | string | 是 | 应用包名。|
445| abilityPrevAccessTime | number | 是 | 应用最后一次使用的时间。|
446| abilityInFgTotalTime | number | 是 | 应用在前台使用的总时间。|
447| id | number | 否 | 用户id。<br>本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。接口将在OpenHarmony 3.1 MR版本中提供使用支持。|
448| abilityPrevSeenTime | number | 否 | 应用最后一次在前台可见的时间。<br>本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。接口将在OpenHarmony 3.1 MR版本中提供使用支持。|
449| abilitySeenTotalTime | number | 否 | 应用在前台可见的总时间。<br>本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。接口将在OpenHarmony 3.1 MR版本中提供使用支持。|
450| fgAbilityAccessTotalTime | number | 否 | 应用访问前台的总时间。<br>本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。接口将在OpenHarmony 3.1 MR版本中提供使用支持。|
451| fgAbilityPrevAccessTime | number | 否 | 应用最后一次访问前台的时间。<br>本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。接口将在OpenHarmony 3.1 MR版本中提供使用支持。|
452| infosBeginTime | number | 否 | BundleActiveInfo对象中第一条应用使用统计的记录时间。<br>本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。接口将在OpenHarmony 3.1 MR版本中提供使用支持。|
453| infosEndTime | number | 否 | BundleActiveInfo对象中最后一条应用使用统计的记录时间。<br>本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。接口将在OpenHarmony 3.1 MR版本中提供使用支持。|
454
455### merge
456
457merge(toMerge: BundleStateInfo): void
458
459合并相同包名的应用使用信息。
460
461**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App
462
463**参数**:
464
465| 参数名 | 类型 | 必填 | 说明 |
466| -------- | -------- | -------- | -------- |
467| toMerge | [BundleStateInfo](#bundlestateinfo) | 是 | 相同包名的应用使用统计信息。|
468
469## BundleActiveState
470
471提供应用事件的具体信息。
472
473**系统能力**:以下各项对应的系统能力均为SystemCapability.ResourceSchedule.UsageStatistics.App
474
475| 参数名 | 类型 | 必填 | 说明 |
476| -------- | -------- | -------- | -------- |
477| bundleName | string | 是 | 应用包名。|
478| stateType | number | 是 | 应用事件类型。|
479| stateOccurredTime | number | 是 | 应用事件发生的时间戳。|
480| appUsagePriorityGroup | number | 否 | 应用程序的使用优先级组。<br>本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。接口将在OpenHarmony 3.1 MR版本中提供使用支持。|
481| indexOfLink | string | 否 | 快捷方式id。<br>本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。接口将在OpenHarmony 3.1 MR版本中提供使用支持。|
482| nameOfClass | string | 否 | 类名。<br>本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。接口将在OpenHarmony 3.1 MR版本中提供使用支持。|
483
484## BundleActiveInfoResponse
485
486提供应用使用时长的具体信息。
487
488**系统能力**:SystemCapability.ResourceSchedule.UsageStatistics.App
489
490| 参数名 | 类型 | 必填 | 说明 |
491| -------- | -------- | -------- | -------- |
492| [key: string]: BundleStateInfo | [key: string]: [BundleStateInfo](#bundlestateinfo) | 是 | 不同应用的使用时长统计信息。|
493
494## IntervalType
495
496提供应用使用时长的查询类型。
497
498**系统能力**:以下各项对应的系统能力均为SystemCapability.ResourceSchedule.UsageStatistics.App
499
500|名称    |默认值    |说明|
501| -------- | -------- | -------- |
502| BY_OPTIMIZED | 0 | 表示系统自行判断最合适的查询类型(天、周、月、年)去查询指定时间段间隔的应用使用时长信息。|
503| BY_DAILY | 1 | 表示系统按照天去查询指定时间段间隔的应用使用时长信息。|
504| BY_WEEKLY | 2 | 表示系统按照周去查询指定时间段间隔的应用使用时长信息。|
505| BY_MONTHLY | 3 | 表示系统按照月去查询指定时间段间隔的应用使用时长信息。|
506| BY_ANNUALLY | 4 | 表示系统按照年去查询指定时间段间隔的应用使用时长信息。|