微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flutter - 健康包未加载 STEP 数据

如何解决Flutter - 健康包未加载 STEP 数据

我在我的 Flutter 应用程序中使用了 health-3.0.3 来获取 Google 拟合数据。我能够获取除 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");

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

解决方法

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

从 Android 10 开始,您必须添加 ACTIVITY_RECOGNITION 才能在 AndroidManifest.xml 中获得 STEP Count 权限。

<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;
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。