getMeasurement method
Subclasses should implement this method to collect a Measurement
.
Can return null
if no data is available.
Can return an Error
measurement if an error occurs.
Implementation
@override
Future<Measurement> getMeasurement() async {
// get the last mark - if null, go back as specified in history
DateTime start = samplingConfiguration.lastTime ??
DateTime.now().subtract(samplingConfiguration.past);
DateTime end = DateTime.now();
debug(
'Collecting app usage - start: ${start.toUtc()}, end: ${end.toUtc()}');
List<app_usage.AppUsageInfo> infos =
await app_usage.AppUsage().getAppUsage(start, end);
Map<String, AppUsageInfo> usage = {};
for (var info in infos) {
usage[info.packageName] = AppUsageInfo.fromAppUsageInfo(info);
}
return Measurement(
sensorStartTime: start.microsecondsSinceEpoch,
sensorEndTime: end.microsecondsSinceEpoch,
data: AppUsage(start.toUtc(), end.toUtc(), usage));
}