Flutter健康数据监测插件carp_movisens_package的使用

发布于 1周前 作者 itying888 来自 Flutter

Flutter健康数据监测插件carp_movisens_package的使用

本库包含一个用于从Movisens设备收集数据的carp_mobile_sensing(CAMS)采样包:

注意 - Movisens强调,Movisens的所有设备都不是医疗设备。请勿将其用于医疗目的。

该包支持以下类型的Measure

  • dk.cachet.carp.movisens.activity – 身体位置、步数、倾斜度、加速度和代谢水平。
  • dk.cachet.carp.movisens.hr - 心率(HR)、心率变异性(HRV)、平均心率。
  • dk.cachet.carp.movisens.eda - 电导皮肤反应。
  • dk.cachet.carp.movisens.skin_temperature - 皮肤温度。
  • dk.cachet.carp.movisens.tap_marker - 用户在传感器上点击的标记。

这些测量类型收集不同种类的数据(请注意,该包定义了自己的命名空间dk.cachet.carp.movisens...):

身体活动:

  • dk.cachet.carp.movisens.activity.steps
  • dk.cachet.carp.movisens.activity.body_position
  • dk.cachet.carp.movisens.activity.inclination
  • dk.cachet.carp.movisens.activity.movement_acceleration
  • dk.cachet.carp.movisens.activity.met_level
  • dk.cachet.carp.movisens.activity.met

心率:

  • dk.cachet.carp.movisens.hr.hr_mean
  • dk.cachet.carp.movisens.hr.hrv
  • dk.cachet.carp.movisens.hr.is_hrv_valid

其他:

  • dk.cachet.carp.movisens.eda
  • dk.cachet.carp.movisens.skin_temperature
  • dk.cachet.carp.movisens.tap_marker

要了解如何使用Movisens设备,请参阅Movisens文档

有关如何使用CARP移动传感(CAMS)框架的进一步文档,请参阅CARP Mobile Sensing Wiki

有关如何构建一个使用Flutter的移动传感应用的示例,请参阅CARP Mobile Sensing App

对于其他CARP产品的Flutter插件,请参阅CARP Mobile Sensing in Flutter

如果你有兴趣编写自己的CAMS采样包,请参阅Wiki上的说明如何扩展CARP

安装

要使用此包,将其添加到你的pubspec.yaml文件中。请注意,该包仅与carp_mobile_sensing一起工作。

dependencies:
  carp_core: ^latest
  carp_mobile_sensing: ^latest
  carp_movisens_package: ^latest

Android集成

在你的应用的manifest.xml文件中添加以下内容(位于android/app/src/main目录下):

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

android/app/build.gradle文件中将Android的minSdkVersion更新为至少19。

iOS集成

在你的ios/Runner/Info.plist文件中添加以下内容:

<dict>
  <key>NSBluetoothAlwaysUsageDescription</key>
  <string>需要蓝牙权限</string>
  <key>NSBluetoothPeripheralUsageDescription</key>
  <string>需要蓝牙权限</string>
  <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
  <string>需要位置权限</string>
  <key>NSLocationAlwaysUsageDescription</key>
  <string>需要位置权限</string>
  <key>NSLocationWhenInUseUsageDescription</key>
  <string>需要位置权限</string>
</dict>

使用

要使用此包,将其导入你的应用中,并与carp_mobile_sensing包一起使用:

import 'package:carp_core/carp_core.dart';
import 'package:carp_mobile_sensing/carp_mobile_sensing.dart';
import 'package:carp_movisens_package/carp_movisens_package.dart';

在创建并运行研究之前,注册此包:

SamplingPackageRegistry().register(MovisensSamplingPackage());

一旦注册,可以像这样向研究协议中添加Movisens测量:

SamplingPackageRegistry().register(MovisensSamplingPackage());

// 创建一个研究协议
StudyProtocol protocol = StudyProtocol(
  ownerId: 'owner@dtu.dk',
  name: 'Movisens Example',
);

// 定义用于数据收集的设备 - 包括手机和Movisens
Smartphone phone = Smartphone();
MovisensDevice movisens = MovisensDevice(
  deviceName: 'MOVISENS Sensor 02655',
  sensorLocation: SensorLocation.Chest,
  sex: Sex.Male,
  height: 175,
  weight: 75,
  age: 25,
);

protocol
  ..addPrimaryDevice(phone)
  ..addConnectedDevice(movisens);

// 添加一个movisens测量
protocol.addTaskControl(
    ImmediateTrigger(),
    BackgroundTask(name: 'Movisens Task', measures: [
      Measure(type: MovisensSamplingPackage.ACTIVITY),
    ]),
    movisens);

更多关于Flutter健康数据监测插件carp_movisens_package的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter健康数据监测插件carp_movisens_package的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是一个关于如何使用 carp_movisens_package 插件在 Flutter 应用中监测健康数据的示例代码。这个插件通常用于从 Movisens 设备获取健康数据,如加速度计数据、心率等。

首先,确保你已经将 carp_movisens_package 添加到你的 pubspec.yaml 文件中:

dependencies:
  flutter:
    sdk: flutter
  carp_movisens_package: ^最新版本号

然后,运行 flutter pub get 以获取依赖。

接下来,在你的 Flutter 应用中,你可以按照以下步骤使用 carp_movisens_package 插件:

  1. 导入必要的包
import 'package:flutter/material.dart';
import 'package:carp_core/carp_core.dart';
import 'package:carp_movisens_package/carp_movisens_package.dart';
  1. 配置主函数和初始设置
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  // 初始化 Movisens 插件
  await MovisensPackage().registerPackage();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Health Data Monitoring',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: HealthDataMonitor(),
    );
  }
}
  1. 创建健康数据监测页面
class HealthDataMonitor extends StatefulWidget {
  @override
  _HealthDataMonitorState createState() => _HealthDataMonitorState();
}

class _HealthDataMonitorState extends State<HealthDataMonitor> {
  late MovisensDeviceConnection _deviceConnection;

  @override
  void initState() {
    super.initState();
    // 初始化设备连接
    initializeDeviceConnection();
  }

  Future<void> initializeDeviceConnection() async {
    try {
      // 查找可用的 Movisens 设备
      List<MovisensDevice> devices = await MovisensDevice.discoverDevices();
      if (devices.isEmpty) {
        print("No Movisens devices found.");
        return;
      }

      // 选择第一个设备(或根据需要进行选择)
      MovisensDevice device = devices.first;
      _deviceConnection = await device.connect();

      // 开始监听数据
      _deviceConnection.accelerationDataStream.listen((data) {
        print("Acceleration Data: ${data.x}, ${data.y}, ${data.z}");
        // 更新 UI 或处理数据
        setState(() {
          // 更新状态以反映新数据
        });
      });

      // 你也可以监听其他数据流,例如心率数据
      _deviceConnection.heartRateDataStream.listen((heartRate) {
        print("Heart Rate: $heartRate");
        // 更新 UI 或处理数据
        setState(() {
          // 更新状态以反映新数据
        });
      });
    } catch (e) {
      print("Error initializing device connection: $e");
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Health Data Monitor'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Connecting to Movisens device...'),
            // 你可以在这里添加其他 UI 元素来显示数据
          ],
        ),
      ),
    );
  }

  @override
  void dispose() {
    // 断开设备连接
    _deviceConnection.disconnect();
    super.dispose();
  }
}

在这个示例中,我们展示了如何初始化 MovisensPackage,查找并连接到 Movisens 设备,以及监听加速度数据和心率数据。注意,这个示例假设你已经在设备上启用了相应的传感器,并且设备已经配对和连接。

此外,请确保你遵循了 Movisens 设备和 Flutter 插件的文档,以获取最新的 API 更改和最佳实践。

回到顶部