usage_tracker 0.0.1 copy "usage_tracker: ^0.0.1" to clipboard
usage_tracker: ^0.0.1 copied to clipboard

PlatformAndroid

A Flutter plugin to track the total time an app is in the foreground over a specified date range, providing insights into app usage duration.

Usage Tracker Plugin #

A Flutter plugin that enables apps to access and track app usage data on Android. This plugin provides methods to check and request permissions, as well as to retrieve app usage statistics within a specified time range.

Features #

  • Check if the app has permission to access usage stats
  • Request usage stats permission
  • Retrieve app usage data within a specific time range

Installation #

Add usage_tracker to your pubspec.yaml file:

dependencies:
  usage_tracker: ^1.0.0

Then, run:

flutter pub get

Permissions #

This plugin requires permission to access app usage data. On Android, the permission must be granted manually by navigating to Settings > Security > Usage Access and enabling the app.

Usage #

Import usage_tracker into your Dart code:

import 'package:usage_tracker/usage_tracker.dart';

Check Permission #

Use hasPermission to check if the app has the necessary usage stats permission:

bool hasPermission = await UsageTracker.hasPermission();

Request Permission #

Use requestPermission to navigate the user to the settings page to grant usage stats permission:

await UsageTracker.requestPermission();

Get App Usage Data #

Use getAppUsageDataInRange to retrieve app usage data within a specified time range:

DateTime startTime = DateTime.now().subtract(Duration(days: 1));
DateTime endTime = DateTime.now();
List usageData = await UsageTracker.getAppUsageDataInRange(startTime, endTime);

Example #

Here's a complete example of how to use the plugin:

import 'package:flutter/material.dart';
import 'package:usage_tracker/usage_tracker.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: UsageStatsScreen(),
    );
  }
}

class UsageStatsScreen extends StatefulWidget {
  @override
  _UsageStatsScreenState createState() => _UsageStatsScreenState();
}

class _UsageStatsScreenState extends State {
  List _usageData = [];

  @override
  void initState() {
    super.initState();
    fetchUsageData();
  }

  Future fetchUsageData() async {
    bool hasPermission = await UsageTracker.hasPermission();
    if (!hasPermission) {
      await UsageTracker.requestPermission();
    }

    DateTime startTime = DateTime.now().subtract(Duration(days: 1));
    DateTime endTime = DateTime.now();

    List usageData = await UsageTracker.getAppUsageDataInRange(startTime, endTime);
    setState(() {
      _usageData = usageData;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Usage Stats'),
      ),
      body: ListView.builder(
        itemCount: _usageData.length,
        itemBuilder: (context, index) {
          final app = _usageData[index];
          return ListTile(
            title: Text(app.appName),
            subtitle: Text('Time in foreground: ${app.totalTimeInForeground}'),
          );
        },
      ),
    );
  }
}

API Reference #

Future<String?> getPlatformVersion() #

Returns the platform version as a string.

Future<bool> hasPermission() #

Checks if the app has permission to access app usage stats. Returns true if permission is granted, otherwise false.

Future<void> requestPermission() #

Requests usage stats permission by navigating to the usage access settings page.

Future<List<AppUsageData>> getAppUsageDataInRange(DateTime startTime, DateTime endTime) #

Fetches app usage data between startTime and endTime. Returns a list of AppUsageData.

AppUsageData Class

Represents usage data for an app.

  • packageName: String - The package name of the app
  • appName: String - The display name of the app
  • totalTimeInForeground: Duration - Time spent in the foreground
  • versionName: String? - Version name of the app
  • versionCode: int - Version code of the app

Platform-Specific Implementation #

This plugin currently supports only Android, as iOS does not provide equivalent APIs for app usage data access.

Contributing #

Contributions are welcome! Feel free to submit issues or pull requests.

2
likes
150
points
13
downloads

Publisher

unverified uploader

Weekly Downloads

A Flutter plugin to track the total time an app is in the foreground over a specified date range, providing insights into app usage duration.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on usage_tracker

Packages that implement usage_tracker