Search packages, repositories and app categories

Package detailsv4.0.0

flutter_activity_recognition

This plugin is used to recognize user activity on Android and iOS platforms.

AndroidiOS
30-day downloads
6.7K
Likes
54
Pub points
150

Install package

flutter pub add flutter_activity_recognition

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

The flutter_activity_recognition package enables developers to detect and respond to user activities such as walking, running, cycling, or driving on both Android and iOS devices. It leverages native platform APIs to provide real-time activity recognition, making it ideal for fitness tracking, navigation apps, and context-aware services. The plugin is lightweight and integrates seamlessly with Flutter applications. It supports background activity monitoring and offers event-driven updates for efficient resource usage.

Use cases

  • Fitness and wellness tracking
  • Context-aware mobile applications
  • Smart navigation systems
  • Activity-based analytics
  • Driver detection for safety apps

Key features

  • Real-time activity detection
  • Cross-platform support (Android & iOS)
  • Background activity monitoring
  • Event-driven API
  • Lightweight and efficient

Suitable for

  • Developers building fitness apps
  • Apps requiring user context awareness
  • Mobile applications needing activity insights
  • Projects involving motion-based triggers

Considerations

  • Requires appropriate permissions on both platforms
  • Battery usage may increase with continuous monitoring
  • Limited to supported device hardware
  • May require testing on physical devices
  • Privacy considerations for continuous activity tracking

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

This plugin is used to recognize user activity on Android and iOS platforms. To implement this plugin, Android used ActivityRecognitionClient and iOS used CMMotionActivityManager.

pub package

Features

  • Can request activity recognition permission.
  • Can subscribe to ActivityStream to listen activity in real time.

Getting started

To use this plugin, add flutter_activity_recognition as a dependency in your pubspec.yaml file. For example:

dependencies:
  flutter_activity_recognition: ^4.0.0

After adding the flutter_activity_recognition plugin to the flutter project, we need to specify the platform-specific permissions to use for this plugin to work properly.

:baby_chick: Android

Open the AndroidManifest.xml file and add the following permissions between the <manifest> and <application> tags.

<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />
<uses-permission android:name="com.google.android.gms.permission.ACTIVITY_RECOGNITION" />
:baby_chick: iOS

Open the ios/Runner/Info.plist file and add the following permission inside the <dict> tag.

<key>NSMotionUsageDescription</key>
<string>Used to recognize user activity information.</string>

How to use

  1. Checks whether activity recognition permission is granted.
Future<bool> _checkAndRequestPermission() async {
  ActivityPermission permission =
      await FlutterActivityRecognition.instance.checkPermission();
  if (permission == ActivityPermission.PERMANENTLY_DENIED) {
    // permission has been permanently denied.
    return false;
  } else if (permission == ActivityPermission.DENIED) {
    permission =
        await FlutterActivityRecognition.instance.requestPermission();
    if (permission != ActivityPermission.GRANTED) {
      // permission is denied.
      return false;
    }
  }

  return true;
} 
  1. To listen activity in real time, use the activityStream getter.
StreamSubscription<Activity>? _activitySubscription;

Future<void> _subscribeActivityStream() async {
  if (await _checkAndRequestPermission()) {
    _activitySubscription = FlutterActivityRecognition.instance.activityStream
        .handleError(_onError)
        .listen(_onActivity);
  }
}

void _onActivity(Activity activity) {
  print('activity detected >> ${activity.toJson()}');
}

void _onError(dynamic error) {
  print('error >> $error');
}

Background Mode

If you want to use this plugin in the background, use the flutter_foreground_task plugin.

More Documentation

Go here to learn about the models provided by this plugin.

Go here to migrate to the new version.

Support

If you find any bugs or issues while using the plugin, please register an issues on GitHub. You can also contact us at <hwj930513@naver.com>.

Categories

Source repository

Projects using this package