0
点赞
收藏
分享

微信扫一扫

OpenHarmony设备使用信息统计


OpenHarmony设备使用信息统计

背景

设备使用信息统计可以更好的了解大家的使用习惯,今天我们就来了解以下设备使用信息如何统计

概述

设备使用信息统计,包括app usage、notification usage、system usage等使用统计,目前只支持app usage使用统计。应用使用信息统计,用于保存和查询应用使用详情(app usage)、事件日志数据(event log)、应用分组(bundle group)情况。部件缓存的应用记录(使用历史统计和使用事件记录)会在事件上报后30分钟内刷新到数据库持久化保存。

设备使用信息统计功能说明

设备使用信息统计接口众多,目前只支持app usage使用统计,接下来介绍下应用使用详情(app usage)的接口逻辑。

  • 应用使用统计信息落盘时机
  1. 每隔30分钟触发一次刷新。
  2. 系统时间变更触发一次刷新。
  3. 下一天开始触发一次刷新。
  • 应用查询接口
  1. 根据起止时间查询所有应用的事件集合。
  2. 根据起止时间查询应用的使用时长。
  3. 根据起止时间查询当前应用的事件集合。
  4. 根据interval(日、周、月、年)类型和起止时间查询应用的使用时长。
  5. 查询调用者应用的优先级群组。
  6. 判断指定应用当前是否是空闲状态。
  7. 查询FA使用记录。返回数量最大不超过maxNum设置的值,FA使用记录由近及远排序,maxNum最大为1000,若不填写maxNum参数,则maxNum默认为1000。
  8. 根据起止时间查询应用通知次数。
  9. 根据起止时间查询系统事件(休眠、唤醒、解锁、锁屏)统计信息。
  10. 查询调用者应用或指定应用的优先级群组。
  • 设置接口
    给应用名称为bundleName的应用分组设置为newGroup。
  • 注册接口
    注册应用分组变化回调监听,当应用分组发生变化,会给所有已注册的应用返回变化信息。
  • 解除注册接口
    解除注册应用分组变化回调监听。

设备使用信息统计使用权限

  • 设备使用信息统计的queryBundleActiveStates、queryBundleStateInfos、queryBundleStateInfoByInterval、queryBundleActiveEventStates、queryAppNotificationNumber、queryAppUsagePriorityGroup(bundleName?)、setBundleGroup、registerGroupCallBack、unRegisterGroupCallBack接口为系统api,调用前需要申请ohos.permission.BUNDLE_ACTIVE_INFO权限。
  • 设备使用信息统计的queryCurrentBundleActiveStates、queryAppUsagePriorityGroup()、isIdleState(三方应用只能查询自身的空闲状态)接口为三方api,调用时不需要申请权限。

使用

注册相关接口包导入:

import stats from '@ohos.bundleState';

在config.json文件中配置设备使用信息统计权限。通过指定起始和结束时间查询所有应用的事件集合,config.json中需要配置权限:ohos.permission.BUNDLE_ACTIVE_INFO。

"module": {
"package": "com.example.deviceUsageStatistics",
...,
"reqPermissions": [
{
"name": "ohos.permission.BUNDLE_ACTIVE_INFO"
}
]
}

通过指定起始和结束时间查询所有应用的事件集合

import stats from '@ohos.bundleState'

// 异步方法promise方式
stats.queryBundleActiveStates(0, 20000000000000).then(res {
console.log('BUNDLE_ACTIVE queryBundleActiveStates promise success.');
for (let i = 0; i < res.length; i++) {
console.log('BUNDLE_ACTIVE queryBundleActiveStates promise number : ' + (i + 1));
console.log('BUNDLE_ACTIVE queryBundleActiveStates promise result ' + JSON.stringify(res[i]));
}
}).catch(err {
console.log('BUNDLE_ACTIVE queryBundleActiveStates promise failed, because: ' + err.code);
});

// 异步方法callback方式
stats.queryBundleActiveStates(0, 20000000000000, (err, res) => {
if (err) {
console.log('BUNDLE_ACTIVE queryBundleActiveStates callback failed, because: ' + err.code);
} else {
console.log('BUNDLE_ACTIVE queryBundleActiveStates callback success.');
for (let i = 0; i < res.length; i++) {
console.log('BUNDLE_ACTIVE queryBundleActiveStates callback number : ' + (i + 1));
console.log('BUNDLE_ACTIVE queryBundleActiveStates callback result ' + JSON.stringify(res[i]));
}
}
});

通过指定起始和结束时间查询应用使用时长统计信息

import stats from '@ohos.bundleState'

// 异步方法promise方式
stats.queryBundleStateInfos(0, 20000000000000).then(res {
console.log('BUNDLE_ACTIVE queryBundleStateInfos promise success.');
let i = 1;
for (let key in res){
console.log('BUNDLE_ACTIVE queryBundleStateInfos promise number : ' + i);
console.log('BUNDLE_ACTIVE queryBundleStateInfos promise result ' + JSON.stringify(res[key]));
i++;
}
}).catch(err {
console.log('BUNDLE_ACTIVE queryBundleStateInfos promise failed, because: ' + err.code);
});

// 异步方法callback方式
stats.queryBundleStateInfos(0, 20000000000000, (err, res) => {
if (err) {
console.log('BUNDLE_ACTIVE queryBundleStateInfos callback failed, because: ' + err.code);
} else {
console.log('BUNDLE_ACTIVE queryBundleStateInfos callback success.');
let i = 1;
for(let key in res){
console.log('BUNDLE_ACTIVE queryBundleStateInfos callback number : ' + i);
console.log('BUNDLE_ACTIVE queryBundleStateInfos callback result ' + JSON.stringify(res[key]));
i++;
}
}
});

\

举报

相关推荐

0 条评论