monitoringAppUsage method

  1. @override
Future<MonitoringAppUsage> monitoringAppUsage({
  1. int startHour = 0,
  2. int startMinute = 0,
  3. int endHour = 23,
  4. int endMinute = 59,
  5. UsageInterval usageInterval = UsageInterval.daily,
  6. int lookbackTimeMs = 10000,
  7. List<String>? packagesName,
})
override

Start monitoring app usage with the specified schedule.

Parameters:

  • startHour: The hour to start monitoring (0-23).
  • startMinute: The minute to start monitoring (0-59).
  • endHour: The hour to end monitoring (0-23).
  • endMinute: The minute to end monitoring (0-59).

Returns a map with the following keys:

  • status: Whether monitoring was successfully started.
  • monitoringActive: Whether monitoring is currently active.
  • schedule: Map containing schedule details (startTime, endTime, frequency).
  • timestamp: When monitoring was started.
  • error: Error message if monitoring failed to start.

Implementation

@override
Future<MonitoringAppUsage> monitoringAppUsage({
  int startHour = 0,
  int startMinute = 0,
  int endHour = 23,
  int endMinute = 59,
  UsageInterval usageInterval = UsageInterval.daily,
  int lookbackTimeMs = 10000, // Default: 10 seconds
  List<String>? packagesName,
}) async {
  final arguments = <Object?, Object?>{
    Argument.startHour: startHour,
    Argument.startMinute: startMinute,
    Argument.endHour: endHour,
    Argument.endMinute: endMinute,
    Argument.lookbackTimeMs: lookbackTimeMs,
    Argument.interval: usageInterval.name,
  };
  if (packagesName != null) {
    arguments[Argument.packagesName] = packagesName;
  }
  final result = await methodChannel.invokeMethod<Map<Object?, Object?>>(
      MethodName.monitoringAppUsage, arguments);
  final map = await _convertToStringDynamicMap(result);
  final response = BaseMonitoringAppUsage.fromJson(map);
  return response.data;
}