collectAppUsageAudit static method
Implementation
static Future<void> collectAppUsageAudit(ACLDatabase db) async {
try {
final allowGetAppUsages =
await PermissionHelper.isPackageUsageStatsEnable();
if (allowGetAppUsages == false) {
return;
}
final yesterday = DateTime.now().subtract(const Duration(days: 1));
final recordYesterday =
await db.appUsageAuditDao.findFirstInDate(yesterday);
if (recordYesterday != null) {
return;
}
final from = DateTime(yesterday.year, yesterday.month, yesterday.day);
final to =
DateTime(yesterday.year, yesterday.month, yesterday.day, 23, 59, 59);
final appUsages =
await AclSdkPlatform.instance.getUsageStatsDailyByPackage(
fromMillisecondsSinceEpoch: from.millisecondsSinceEpoch,
toMillisecondsSinceEpoch: to.millisecondsSinceEpoch,
);
if (appUsages == null || appUsages.isEmpty == true) {
return;
}
for (final appUsage in appUsages) {
await db.appUsageAuditDao.create(AppUsageAuditCompanion(
createdAt: Value(DateTime.now()),
date: Value(yesterday.toDateString()),
packageName: Value(appUsage['packageName']),
totalTimeForegroundServiceUsed:
Value(appUsage['totalTimeForegroundServiceUsed']),
totalTimeInForeground: Value(appUsage['totalTimeInForeground']),
totalTimeVisible: Value(appUsage['totalTimeVisible']),
));
}
} catch (e) {
print('Error: AppUsageAuditHelper.collectAppUsageAudit');
print(e);
}
}