3

我在我的颤振应用程序中使用了 health-3.0.3 来获取 Google fit 数据。我能够获得除 STEP 数据以外的所有数据,它总是显示为零。

你可以参考这里的健康包 Health 3.0.3 Flutter

这是在我的应用程序中访问 STEP 数据类型的代码块

List<HealthDataType> types = [
      HealthDataType.STEPS,
      HealthDataType.WEIGHT,
      //HealthDataType.HEIGHT,
    ];

    setState(() => _state = AppState.FETCHING_DATA);

    /// You MUST request access to the data types before reading them
    bool accessWasGranted = await health.requestAuthorization(types);

    double steps = 0;

    if (accessWasGranted) {
      try {
        /// Fetch new data
        List<HealthDataPoint> healthData =
            await health.getHealthDataFromTypes(startDate, endDate, types);

        /// Save all the new data points
        _healthDataList.addAll(healthData);
      } catch (e) {
        print("Caught exception in getHealthDataFromTypes: $e");
      }

      /// Filter out duplicates
      _healthDataList = HealthFactory.removeDuplicates(_healthDataList);

      /// Print the results
      _healthDataList.forEach((x) {
        print("Data point: $x");
        steps += (x.value as double);
      });

      print("Steps: $steps");

您可以参考给定链接中示例选项卡下的完整代码。有谁知道这里有什么问题?

4

1 回答 1

3

health: 3.0.4更稳定,当我写这个答案时。

从 Android 10 开始,您必须添加ACTIVITY_RECOGNITION以获得 STEP Count 权限AndroidManifest.xml

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

然后使用permission_handler请求许可。

if (Platform.isAndroid) {
  final permissionStatus = Permission.activityRecognition.request();
  if (await permissionStatus.isDenied ||
      await permissionStatus.isPermanentlyDenied) {
    showToast(
        'activityRecognition permission required to fetch your steps count');
    return;
  }
}
于 2021-06-18T04:24:08.383 回答