未验证 提交 344e916d 编写于 作者: O openharmony_ci 提交者: Gitee

!10667 设备使用信息统计API开发文档和说明修改

Merge pull request !10667 from yp99ustc/master
# 设备使用信息统计
- [设备使用信息统计概述](device-usage-statistics-overview.md)
- [设备使用信息统计开发指导](device-usage-statistics-dev-guide.md)
\ No newline at end of file
- [设备使用信息统计开发指导(API7)](device-usage-statistics-dev-guide.md)
- [设备使用信息统计开发指导(API9)](device-usage-statistics-use-guide.md)
\ No newline at end of file
# 设备使用信息统计
# 设备使用信息统计(API7)
## 场景介绍
......@@ -24,36 +24,14 @@ import stats from '@ohos.bundleState';
| function queryAppUsagePriorityGroup(callback: AsyncCallback<number>): void | 查询当前应用的使用优先级群组。callback形式。 |
| function queryAppUsagePriorityGroup(): Promise<number>; | 查询当前应用的使用优先级群组。promise形式。 |
| function isIdleState(bundleName: string, callback: AsyncCallback<boolean>): void | 判断指定Bundle Name的应用当前是否是空闲状态。 |
| function getRecentlyUsedModules(callback: AsyncCallback<BundleActiveModuleInfo>): void | 查询FA使用记录,返回不超过1000条FA使用记录。 |
| function getRecentlyUsedModules(maxNum: number, callback: AsyncCallback<BundleActiveModuleInfo>): void | 根据maxNum,查询FA使用记录,返回不超过maxNum条FA使用记录。 maxNum不超过1000|
| function queryAppNotificationNumber(begin: number, end: number, callback: AsyncCallback<Array<BundleActiveEventState>>): void | 通过指定起始和结束时间查询所有应用的通知次数。 |
| function queryBundleActiveEventStates(begin: number, end: number, callback: AsyncCallback<Array<BundleActiveEventState>>): void | 通过指定起始和结束时间查询系统事件(休眠、唤醒、解锁、锁屏)统计信息。 |
| function queryAppUsagePriorityGroup(bundleName : string, callback: AsyncCallback<number>): void | 查询指定应用的使用优先级群组。callback形式。 |
| function queryAppUsagePriorityGroup(bundleName? : string): Promise<number>; | 查询当前调用者应用或者指定应用的使用优先级群组。promise形式。 |
| function setBundleGroup(bundleName : string, newGroup: GroupType, callback: AsyncCallback>boolean>): void | 给应用名是bundleName的应用分组设置成newGroup,返回设置结果是否成功,以callback形式返回。 |
| function setBundleGroup(bundleName : string, newGroup : GroupType): Promise>boolean>; | 给应用名是bundleName的应用分组设置成newGroup,返回设置结果是否成功,以promise形式返回。 |
| function registerGroupCallBack(groupCallback: Callback>BundleActiveGroupCallbackInfo>, callback: AsyncCallback>boolean>): void | 注册应用分组变化监听回调,返回注册是否成功,当应用分组发生变化时,会给所有已注册的监听者返回回调信息,以callback形式返回。 |
| function registerGroupCallBack(groupCallback: Callback>BundleActiveGroupCallbackInfo>): Promise>boolean>; | 注册应用分组变化监听回调,返回注册是否成功,当应用分组发生变化时,会给所有已注册的监听者返回回调信息,以promise形式返回。 |
| function unRegisterGroupCallBack(callback: AsyncCallback>boolean>): void | 解除应用分组监听回调,以callback形式返回。 |
| function unRegisterGroupCallBack(): Promise>boolean>; | 解除应用分组监听回调,以promise形式返回。 |
## 开发步骤
1. 在config.json文件中配置设备使用信息统计权限。
1. 获取设备使用信息之前,需要检查是否已经配置请求相应的权限。
系统提供的设备使用信息统计的权限是ohos.permission.BUNDLE_ACTIVE_INFO
具体配置方式请参考[权限申请声明](../security/accesstoken-guidelines.md)
```json
"module": {
"package": "com.example.deviceUsageStatistics",
...,
"reqPermissions": [
{
"name": "ohos.permission.BUNDLE_ACTIVE_INFO"
}
]
}
```
2. 通过指定起始和结束时间查询所有应用的事件集合,config.json中需要配置权限:ohos.permission.BUNDLE_ACTIVE_INFO。
2. 通过指定起始和结束时间查询所有应用的事件集合,需要配置ohos.permission.BUNDLE_ACTIVE_INFO权限。
```js
import stats from '@ohos.bundleState'
......@@ -69,7 +47,7 @@ import stats from '@ohos.bundleState';
});
```
3. 通过指定起始和结束时间查询应用使用时长统计信息,config.json中需要配置权限:ohos.permission.BUNDLE_ACTIVE_INFO
3. 通过指定起始和结束时间查询应用使用时长统计信息,需要配置ohos.permission.BUNDLE_ACTIVE_INFO权限
```js
import stats from '@ohos.bundleState'
......@@ -87,7 +65,7 @@ import stats from '@ohos.bundleState';
});
```
4. 通过指定起始和结束时间查询当前应用的事件集合,config.json中不需要配置权限。
4. 通过指定起始和结束时间查询当前应用的事件集合,不需要配置权限。
```js
import stats from '@ohos.bundleState'
......@@ -103,7 +81,7 @@ import stats from '@ohos.bundleState';
});
```
5. 通过指定时间段间隔(天、周、月、年)查询应用使用时长统计信息,config.json中需要配置权限:ohos.permission.BUNDLE_ACTIVE_INFO
5. 通过指定时间段间隔(天、周、月、年)查询应用使用时长统计信息,需要配置ohos.permission.BUNDLE_ACTIVE_INFO权限
```js
import stats from '@ohos.bundleState'
......@@ -120,7 +98,7 @@ import stats from '@ohos.bundleState';
```
6. 查询(无参)当前调用者应用的使用优先级群组,config.json中不需要配置权限。
6. 查询(无参)当前调用者应用的使用优先级群组,不需要配置权限。
```js
import stats from '@ohos.bundleState'
......@@ -132,7 +110,7 @@ import stats from '@ohos.bundleState';
});
```
7. 判断指定Bundle Name的应用当前是否是空闲状态,config.json中需要配置权限:ohos.permission.BUNDLE_ACTIVE_INFO,三方应用只能查询自身的空闲状态。
7. 判断指定Bundle Name的应用当前是否是空闲状态,需要配置ohos.permission.BUNDLE_ACTIVE_INFO权限,三方应用只能查询自身的空闲状态。
```js
import stats from '@ohos.bundleState'
......@@ -144,129 +122,6 @@ import stats from '@ohos.bundleState';
});
```
8. 查询FA使用记录。返回数量最大不超过maxNum设置的值,若不传入maxNum参数,则默认maxNum为1000。config.json中需要配置权限:ohos.permission.BUNDLE_ACTIVE_INFO。
```js
import stats from '@ohos.bundleState'
// 异步方法promise方式
stats.getRecentlyUsedModules(1000).then(res => {
console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise succeeded');
for (let i = 0; i < res.length; i++) {
console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise number : ' + (i + 1));
console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise result ' + JSON.stringify(res[i]));
}
}).catch(err=> {
console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise failed, because: ' + err.code);
});
// 无maNum参数异步方法promise方式
stats.getRecentlyUsedModules().then(res => {
console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise succeeded');
for (let i = 0; i < res.length; i++) {
console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise number : ' + (i + 1));
console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise result ' + JSON.stringify(res[i]));
}
}).catch( err=> {
console.log('BUNDLE_ACTIVE getRecentlyUsedModules promise failed, because: ' + err.code);
});
```
9. 通过指定起始和结束时间查询所有应用的通知次数,config.json中需要配置权限:ohos.permission.BUNDLE_ACTIVE_INFO。
```js
import stats from '@ohos.bundleState'
stats.queryAppNotificationNumber(0, 20000000000000).then(res => {
console.log('BUNDLE_ACTIVE queryAppNotificationNumber promise success.');
console.log('BUNDLE_ACTIVE queryAppNotificationNumber promise result ' + JSON.stringify(res));
}).catch(err => {
console.log('BUNDLE_ACTIVE queryAppNotificationNumber promise failed, because: ' + err.code);
});
```
10. 通过指定起始和结束时间查询系统事件(休眠、唤醒、解锁、锁屏)统计信息,config.json中需要配置权限:ohos.permission.BUNDLE_ACTIVE_INFO。
```js
import stats from '@ohos.bundleState'
// 异步方法promise方式
stats.queryBundleActiveEventStates(0, 20000000000000).then(res => {
console.log('BUNDLE_ACTIVE queryBundleActiveEventStates promise success.');
console.log('BUNDLE_ACTIVE queryBundleActiveEventStates promise result ' + JSON.stringify(res));
}).catch(err => {
console.log('BUNDLE_ACTIVE queryBundleActiveEventStates promise failed, because: ' + err.code);
});
```
11. 查询(无参)当前调用者应用的使用优先级群组,config.json中不需要配置权限。查询(有参)指定应用的使用优先级群组,config.json中需要配置权限:ohos.permission.BUNDLE_ACTIVE_INFO。
```js
import stats from '@ohos.bundleState'
// 无bundleName异步方法promise方式
stats.queryAppUsagePriorityGroup().then(res => {
console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup promise succeeded. result: ' + JSON.stringify(res));
}).catch(err => {
console.log('BUNDLE_ACTIVE queryAppUsagePriorityGroup promise failed. because: ' + err.code);
});
let bundleName = "com.ohos.camera";
// 有bundleName异步promise方式
stats.queryAppUsagePriorityGroup(bundleName).then(res => {
console.log('BUNDLE_ACTIVE QueryPackageGroup promise succeeded. result: ' + JSON.stringify(res));
}).catch(err => {
console.log('BUNDLE_ACTIVE QueryPackageGroup promise failed. because: ' + err.code);
});
```
11. 给应用名是bundleName的应用分组设置成newGroup,返回设置结果是否成功
```javascript
import stats from '@ohos.bundleState'
stats.setBundleGroup(this.bundleName, this.newGroup).then(() => {
console.log('BUNDLE_ACTIVE SetBundleGroup promise succeeded.');
}).catch( err => {
console.log('BUNDLE_ACTIVE SetBundleGroup promise failed. because: ' + err.code);
});
```
12. 注册应用分组变化监听回调,返回注册是否成功,当应用分组发生变化时,会给所有已注册的监听者返回回调信息
```javascript
import stats from '@ohos.bundleState'
// 异步方法promise形式
let onBundleGroupChanged = (err,res) => {
console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack callback success.');
console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result oldGroup is : ' + res.oldGroup);
console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result newGroup is : ' + res.newGroup);
console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result changeReason is : ' + res.newGroup);
console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result userId is : ' + res.userId);
console.log('BUNDLE_ACTIVE onBundleGroupChanged RegisterGroupCallBack result bundleName is : ' + res.bundleName);
};
stats.registerGroupCallBack(onBundleGroupChanged).then(() => {
console.log('BUNDLE_ACTIVE RegisterGroupCallBack promise succeeded.');
}).catch(err => {
console.log('BUNDLE_ACTIVE RegisterGroupCallBack promise failed. because: ' + err.code);
});
```
13. 解除应用分组监听回调
```javascript
import stats from '@ohos.bundleState'
// promise
stats.unRegisterGroupCallBack().then(() => {
console.log('BUNDLE_ACTIVE UnRegisterGroupCallBack promise succeeded.');
}).catch(err => {
console.log('BUNDLE_ACTIVE UnRegisterGroupCallBack promise failed. because: ' + err.code);
});
```
## 相关实例
针对设备使用信息统计,有以下相关实例可供参考:
- [`DeviceUsageStatistics`:设备使用信息统计(ArkTS)(API8)(Full SDK)](https://gitee.com/openharmony/applications_app_samples/tree/master/device/DeviceUsageStatistics)
......
......@@ -68,7 +68,6 @@
- [@ohos.bundle (Bundle模块)](js-apis-Bundle.md)
- [@ohos.bundle.defaultAppManager (Bundle模块)](js-apis-bundle-defaultAppManager.md)
- [@ohos.bundle.innerBundleManager (innerBundleManager模块(JS端SDK接口))](js-apis-Bundle-InnerBundleManager.md)
- [@ohos.bundleState (设备使用信息统计)](js-apis-deviceUsageStatistics.md)
- [@ohos.distributedBundle (distributedBundle模块(JS端SDK接口))](js-apis-Bundle-distributedBundle.md)
- [@ohos.zlib (Zip模块)](js-apis-zlib.md)
- bundle/[AbilityInfo (AbilityInfo)](js-apis-bundle-AbilityInfo.md)
......@@ -120,6 +119,7 @@
- [@ohos.backgroundTaskManager (后台任务管理)](js-apis-backgroundTaskManager.md)
- [@ohos.distributedMissionManager (分布式任务管理)](js-apis-distributedMissionManager.md)
- [@ohos.reminderAgentManager (后台代理提醒)](js-apis-reminderAgentManager.md)
- [@ohos.resourceschedule.usageStatistics (设备使用信息统计)](js-apis-resourceschedule-deviceUsageStatistics.md)
- [@ohos.workScheduler (延迟任务调度)](js-apis-workScheduler.md)
- [@ohos.WorkSchedulerExtensionAbility (延迟任务调度回调)](js-apis-WorkSchedulerExtensionAbility.md)
- 定制管理
......@@ -269,6 +269,7 @@
- [@ohos.application.testRunner (TestRunner)](js-apis-testRunner.md)
- [@ohos.uitest (UiTest)](js-apis-uitest.md)
- 已停止维护的接口
- [@ohos.bundleState (设备使用信息统计)](js-apis-deviceUsageStatistics.md)
- [@ohos.bytrace (性能打点)](js-apis-bytrace.md)
- [@ohos.data.storage (轻量级存储)](js-apis-data-storage.md)
- [@ohos.data.distributedData (分布式数据管理)](js-apis-distributed-data.md)
......@@ -294,3 +295,4 @@
- [@system.sensor (传感器)](js-apis-system-sensor.md)
- [@system.storage (数据存储)](js-apis-system-storage.md)
- [@system.vibrator (振动)](js-apis-system-vibrate.md)
- [console (日志打印)](js-apis-logs.md)
# DeviceUsageStatistics错误码
## 10000001 内存操作失败
**错误信息**
Memory operation failed.
**错误描述**
内存操作失败
**可能原因**
该错误码表示系统服务工作异常,可能原因是内存不足导致创建对象失败。
**处理步骤**
请检查内存是否泄漏。
## 10000002 IPC parcel write failed
**错误信息**
Parcel operation failed. Failed to write the parcel.
**错误描述**
进程间通信的时候,写入数据对象失败。
**可能原因**
写入对象失败。
**处理步骤**
请检查对象值是否正常。
## 10000003 系统服务操作失败
**错误信息**
System service operation failed.
**错误描述**
客户端进程请求服务进程时,获取系统服务操作失败。
**可能原因**
依赖的服务进程出现问题。
**处理步骤**
系统服务内部工作异常,请稍后重试,或者重启设备尝试。
## 10000004 IPC通信失败
**错误信息**
IPC communication failed.
**错误描述**
进程间通信的时候,IPC通信失败。
**可能原因**
系统服务异常或者IPC通信数据异常。
**处理步骤**
系统服务内部工作异常,请稍后重试,或者重启设备尝试。
## 10000005 应用未安装
**错误信息**
The application is not installed.
**错误描述**
应用未安装。
**可能原因**
应用未安装或者已经卸载
**处理步骤**
操作应用信息时请先检查应用是否存在。
## 10000006 获取应用信息失败
**错误信息**
Get application info failed.
**错误描述**
客户端进程获取服务中相关应用信息失败。
**可能原因**
1. beginTime或者endTime输入不合法。
2. 应用未安装或者已经被卸载了。
3. intervalType输入不合法。
**处理步骤**
请检查入参合法性以及应用是否存在。
## 10000007 时间操作失败
**错误信息**
Get system or actual time operation failed.
**错误描述**
系统服务获取系统事件或者实际事件操作失败。
**可能原因**
系统异常。
**处理步骤**
系统服务内部工作异常,请稍后重试,或者重启设备尝试。
## 10100001 应用分组信息操作重复
**错误信息**
Application group operation failed. The application group are the the same or do not need te be updated.
**错误描述**
应用分组操作失败,应用分组相同不需要重复设置或者注册和解注册重复操作。
**可能原因**
重复设置应用分组或者重复注册分组变化监听和重复取消分组变化监听。
**处理步骤**
请勿重复设置应用分组、注册监听和取消监听。
## 10100002 获取应用分组信息失败
**错误信息**
Get application group info failed. The application group infomation cannot be found.
**错误描述**
客户端进程获取应用分组信息失败,改信息在数据库中不存在。
**可能原因**
1. 应用输入bundleName错误。
2. 应用可能没有安装或者已经卸载
**处理步骤**
请检查入参bundleName的合法性和应用是否存在。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册