#flutter #google-fit #google-fit-api #flutter-health
#сбой #google-fit #google-fit-api #флаттер-работоспособность
Вопрос:
Я использовал health-3.0.3 в своем приложении flutter для получения данных Google fit. Я могу получить все данные, кроме пошаговых данных, которые всегда показывают ноль.
Вы можете ознакомиться с пакетом работоспособности здесь Health 3.0.3 Flutter
Это блок кода для доступа к типу данных ШАГА в моем приложении
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");
Вы можете ознакомиться с полным кодом на вкладке примеры по данной ссылке. Кто-нибудь знает, что здесь не так?
Комментарии:
1. Вы подтвердили, что предоставленный доступ соответствует действительности, используя режим отладки, и количество шагов отображается в приложении GoogleFit правильно?
2. Доступ был предоставлен всегда ложным при любом обновлении
3. У меня такая же проблема. Вы нашли решение?
4. Да, для accessWasGranted установлено значение true, и данные о шагах отображаются правильно в Google Fit
5. @WaiKyaw Нет, пока нет
Ответ №1:
здоровье: 3.0.4 более стабильно, когда я пишу этот ответ.
С Android 10. вы должны добавить ACTIVITY_RECOGNITION
для получения разрешения на подсчет ШАГОВ 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;
}
}
Комментарии:
1. Этот ответ очень помог, спасибо.