# 设备使用信息统计 - [简介](#section11660541593) - [目录](#section161941989596) - [说明](#section1312121216216) - [接口说明](#section1551164914237) - [使用说明](#section129654513264) - [相关仓](#section1371113476307) ## 简介 设备使用信息统计,包括app usage/notification usage/system usage等使用统计。例如应用使用信息统计,用于保存和查询应用使用详情(app usage)、事件日志数据(event log)、应用分组(bundle group)情况。 部件缓存的应用记录(使用历史统计和使用事件记录)会在事件上报后30分钟内刷新到数据库持久化保存。 ![](figures/zh-cn_image001.png) ## 目录 ``` /foundation/resourceschedule/device_usage_statistics ├── BUILD.gn # 模块编译脚本 ├── LICENSE # 开源协议 ├── adapter # 适配目录 ├── bundle.json # 部件化解耦及编译脚本 ├── frameworks # 框架层目录 ├── interfaces │   ├── innerkits # 对内接口目录 │   └── kits # 对外接口目录 ├── services # 服务层目录 └── test # 测试用例目录 ``` ## 说明 ### 接口说明 设备使用信息统计接口,包括app usage/notification usage/system usage等接口,以app usage接口为例,对外提供主要接口如下。

接口名

接口描述

queryBundleEvents(begin: number, end: number, callback: AsyncCallback<Array<BundleEvents>>): void

通过指定起始和结束时间查询所有应用的事件集合(callback形式)。

queryBundleEvents(begin: number, end: number): Promise<Array<BundleEvents>>

通过指定起始和结束时间查询所有应用的事件集合(Promise形式)。

queryBundleStatsInfos(begin: number, end: number, callback: AsyncCallback<BundleStatsMap>): void

通过指定起始和结束时间查询应用使用时长统计信息(callback形式)。

queryBundleStatsInfos(begin: number, end: number): Promise<BundleStatsMap>

通过指定起始和结束时间查询应用使用时长统计信息(Promise形式)。

queryCurrentBundleEvents(begin: number, end: number, callback: AsyncCallback<Array<BundleEvents>>): void

通过指定起始和结束时间查询当前应用的事件集合(callback形式)。

queryCurrentBundleEvents(begin: number, end: number): Promise<Array<BundleEvents>>

通过指定起始和结束时间查询当前应用的事件集合(Promise形式)。

queryBundleStatsInfoByInterval(byInterval: IntervalType, begin: number, end: number, callback: AsyncCallback<Array<BundleStatsInfo>>): void

通过指定时间段间隔(天、周、月、年)查询应用使用时长统计信息(callback形式)。

queryBundleStatsInfoByInterval(byInterval: IntervalType, begin: number, end: number): Promise<Array<BundleStatsInfo>>

通过指定时间段间隔(天、周、月、年)查询应用使用时长统计信息(Promise形式)。

isIdleState(bundleName: string, callback: AsyncCallback<boolean>): void

判断指定Bundle Name的应用当前是否是空闲状态(callback形式)。

isIdleState(bundleName: string): Promise<boolean>

判断指定Bundle Name的应用当前是否是空闲状态(Promise形式)。

isIdleStateSync(bundleName: string): boolean

判断指定Bundle Name的应用当前是否是空闲状态。

queryDeviceEventStats(begin: number, end: number, callback: AsyncCallback<Array<DeviceEventStats>>): void

根据起止时间查询系统事件(休眠、唤醒、解锁、锁屏)统计信息(callback形式)。

queryDeviceEventStats(begin: number, end: number): Promise<Array<DeviceEventStats>>

根据起止时间查询系统事件(休眠、唤醒、解锁、锁屏)统计信息(Promise形式)。

queryNotificationEventStats(begin: number, end: number, callback: AsyncCallback<Array<DeviceEventStats>>): void

根据起止时间查询应用通知次数(callback形式)。

queryNotificationEventStats(begin: number, end: number): Promise<Array<DeviceEventStats>>

根据起止时间查询应用通知次数(Promise形式)。

queryModuleUsageRecords(callback: AsyncCallback<Array<HapModuleInfo>>): void

查询FA使用记录。返回数量最大不超过1000设置的值,FA使用记录由近及远排序(callback形式)。

queryModuleUsageRecords(): Promise<Array<HapModuleInfo>>

查询FA使用记录。返回数量最大不超过1000设置的值,FA使用记录由近及远排序(Promise形式)。

queryModuleUsageRecords(maxNum: number, callback: AsyncCallback<Array<HapModuleInfo>>): void

查询FA使用记录。返回数量最大不超过maxNum设置的值,FA使用记录由近及远排序,maxNum最大为1000(callback形式)。

queryModuleUsageRecords(maxNum: number): Promise<Array<HapModuleInfo>>

查询FA使用记录。返回数量最大不超过maxNum设置的值,FA使用记录由近及远排序,maxNum最大为1000(Promise形式)。

queryAppGroup(callback: AsyncCallback<number>): void

查询当前应用的使用优先级分组(callback形式)。

queryAppGroup(): Promise<number>

查询当前应用的使用优先级分组(Promise形式)。

queryAppGroupSync(): number

查询当前应用的使用优先级分组。

queryAppGroup(bundleName : string, callback: AsyncCallback<number>): void

查询指定bundleName的应用的优先级分组(callback形式)。

queryAppGroup(bundleName : string): Promise<number>

查询指定bundleName的应用的使用优先级分组(Promise形式)。

queryAppGroupSync(bundleName : string): number

查询指定bundleName的应用的优先级分组。

setAppGroup(bundleName: string, newGroup: GroupType, callback: AsyncCallback<void>): void

将指定应用的分组设置为参数提供的分组(callback形式)。

setAppGroup(bundleName: string, newGroup: GroupType): Promise<void>

将指定应用的分组设置为参数提供的分组(Promise形式)。

registerAppGroupCallBack(callback: Callback<AppGroupCallbackInfo>, callback: AsyncCallback<void>): void

给应用分组变化注册回调(callback形式)。

registerAppGroupCallBack(callback: Callback<AppGroupCallbackInfo>): Promise<void>

给应用分组变化注册回调(Promise形式)。

unRegisterAppGroupCallBack(callback: AsyncCallback<void>): void

将已注册过的应用分组回调解除注册(callback形式)。

unRegisterAppGroupCallBack(): Promise<void>

将已注册过的应用分组回调解除注册(Promise形式)。

### 使用说明 设备使用信息统计接口众多,以应用使用详情(app usage)接口为例,介绍接口逻辑。 - **应用使用统计信息落盘时机**: >1. 每隔30分钟触发一次刷新; >2. 系统时间变更触发一次刷新; >3. 下一天开始触发一次刷新; - **应用查询接口**: >1. 根据起止时间查询所有应用的事件集合; >2. 根据起止时间查询应用的使用时长; >3. 根据起止时间查询当前应用的事件集合; >4. 根据interval(日、周、月、年)类型和起止时间查询应用的使用时长; >5. 查询当前应用的优先级分组; >6. 判断指定应用当前是否是空闲状态; >7. 根据起止时间查询系统事件(休眠、唤醒、解锁、锁屏)统计信息; >8. 根据起止时间查询应用通知次数; >9. 查询FA使用记录。返回数量最大不超过maxNum设置的值,FA使用记录由近及远排序,maxNum最大为1000,若不填写maxNum参数,则maxNum默认为1000; >10. 查询当前应用或指定bundlename对应的应用的分组; >11. 将指定应用的分组设置为参数提供的分组; >12. 给应用分组变化注册回调; >13. 将已注册过的应用分组回调解除注册; ## 相关仓 全局资源调度子系统 **[resourceschedule_device_usage_statistics](https://gitee.com/openharmony/resourceschedule_device_usage_statistics)** [resourceschedule_resource_schedule_service](https://gitee.com/openharmony/resourceschedule_resource_schedule_service) [appexecfwk_standard](https://gitee.com/openharmony/appexecfwk_standard) [distributeddatamgr_appdatamgr](https://gitee.com/openharmony/distributeddatamgr_appdatamgr)