Flutter活动识别插件awareframework_activityrecognition的使用

Flutter活动识别插件awareframework_activityrecognition的使用

Aware ActivityRecognition

安装插件到项目中

1. 编辑 pubspec.yaml

在项目的 pubspec.yaml 文件中添加以下依赖:

dependencies:
  awareframework_activityrecognition

2. 在源代码中导入包

在需要使用的 Dart 文件中导入以下包:

import 'package:awareframework_activityrecognition/awareframework_activityrecognition.dart';
import 'package:awareframework_core/awareframework_core.dart';

公共函数

activityrecognition 传感器

  • start()
    启动传感器。
  • stop()
    停止传感器。
  • sync(force: Boolean)
    同步数据。如果 forcetrue,强制同步。
  • enable()
    启用传感器。
  • disable()
    禁用传感器。
  • isEnable()
    检查传感器是否启用。

配置键

以下是配置键及其默认值:

  • period: Float: 数据保存周期(分钟)。默认值为 1
  • threshold: Double: 如果设置,不记录变化小于该值的连续点。
  • enabled: Boolean: 传感器是否启用。默认值为 false
  • debug: Boolean: 是否启用日志记录。默认值为 false
  • label: String: 数据标签。默认值为空字符串。
  • deviceId: String: 关联事件和传感器的设备 ID。默认值为空字符串。
  • dbEncryptionKey: String: 数据库加密密钥。默认值为 null
  • dbType: Engine: 数据库引擎类型。默认值为 0(0 = 无,1 = Room 或 Realm)。
  • dbPath: String: 数据库路径。默认值为 "aware_accelerometer"
  • dbHost: String: 数据库同步主机。默认值为 null

数据表示

数据表示在 Android 和 iOS 上有所不同。更多信息可以查看以下链接:

示例用法

以下是一个完整的示例代码,展示如何使用 awareframework_activityrecognition 插件:

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

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

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => new _MyAppState();
}

class _MyAppState extends State<MyApp> {
  late ActivityRecognitionSensor sensor;
  late ActivityRecognitionSensorConfig config;

  [@override](/user/override)
  void initState() {
    super.initState();

    // 初始化配置
    config = ActivityRecognitionSensorConfig()..debug = true;

    // 初始化传感器
    sensor = new ActivityRecognitionSensor(config);

    // 启动传感器
    sensor.start();

    // 设置数据更新监听器
    sensor.onDataChanged.listen((Map<String, dynamic> result) {
      setState(() {
        // 处理接收到的数据
      });
    });

    // 停止传感器
    Future.delayed(Duration(seconds: 10), () {
      sensor.stop();
    });

    // 同步数据
    Future.delayed(Duration(seconds: 15), () {
      sensor.sync(true);
    });

    // 创建卡片
    var card = new ActivityRecognitionCard(sensor: sensor);
    // 将卡片添加到目标 Widget 中
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return new MaterialApp(
      home: new Scaffold(
        appBar: new AppBar(
          title: const Text('Activity Recognition Plugin Example'),
        ),
        body: Center(
          child: Text("Listening to Activity Recognition Data..."),
        ),
      ),
    );
  }
}

更多关于Flutter活动识别插件awareframework_activityrecognition的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter活动识别插件awareframework_activityrecognition的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


awareframework_activityrecognition 是一个用于 Flutter 的插件,它基于 AWARE Framework,用于识别用户的活动(如步行、跑步、骑车等)。这个插件可以帮助开发者轻松地集成活动识别功能到他们的 Flutter 应用中。

安装插件

首先,你需要在 pubspec.yaml 文件中添加 awareframework_activityrecognition 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  awareframework_activityrecognition: ^0.1.0  # 请检查最新版本

然后运行 flutter pub get 来安装插件。

配置 Android 和 iOS

Android

AndroidManifest.xml 文件中添加以下权限:

<uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />

iOS

Info.plist 文件中添加以下权限:

<key>NSMotionUsageDescription</key>
<string>We need access to motion data to recognize your activity.</string>

使用插件

初始化插件

在你的 Dart 代码中,首先导入插件:

import 'package:awareframework_activityrecognition/awareframework_activityrecognition.dart';

然后初始化插件:

ActivityRecognition activityRecognition = ActivityRecognition();

启动活动识别

你可以通过调用 start() 方法来启动活动识别:

activityRecognition.start();

停止活动识别

你可以通过调用 stop() 方法来停止活动识别:

activityRecognition.stop();

监听活动变化

你可以通过监听 onActivityChanged 流来获取活动变化的数据:

activityRecognition.onActivityChanged.listen((ActivityData data) {
  print("Activity: ${data.activity}");
  print("Confidence: ${data.confidence}");
});

ActivityData 包含以下字段:

  • activity: 当前活动的类型(如 walking, running, cycling 等)。
  • confidence: 识别的置信度(0-100)。

示例代码

以下是一个完整的示例代码,展示了如何使用 awareframework_activityrecognition 插件:

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: ActivityRecognitionScreen(),
    );
  }
}

class ActivityRecognitionScreen extends StatefulWidget {
  [@override](/user/override)
  _ActivityRecognitionScreenState createState() => _ActivityRecognitionScreenState();
}

class _ActivityRecognitionScreenState extends State<ActivityRecognitionScreen> {
  ActivityRecognition activityRecognition = ActivityRecognition();
  String _activity = "Unknown";
  int _confidence = 0;

  [@override](/user/override)
  void initState() {
    super.initState();
    activityRecognition.onActivityChanged.listen((ActivityData data) {
      setState(() {
        _activity = data.activity;
        _confidence = data.confidence;
      });
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Activity Recognition'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Activity: $_activity'),
            Text('Confidence: $_confidence'),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                activityRecognition.start();
              },
              child: Text('Start Activity Recognition'),
            ),
            ElevatedButton(
              onPressed: () {
                activityRecognition.stop();
              },
              child: Text('Stop Activity Recognition'),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部