diff --git a/README.md b/README.md index 0e9b907..0aaf815 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ -# react-native-fitness +# react-native-fitness(fix crashes on Android by calling getHeartRate()) `react-native-fitness` is a library that works on both `iOS` and `Android` with it you can interact with Apple Healthkit and Google Fit. Currently the lib provides a set of [API](#API) that you can use to read steps count or distance count for a given period of time. diff --git a/android/src/main/java/com/ovalmoney/fitness/manager/Manager.java b/android/src/main/java/com/ovalmoney/fitness/manager/Manager.java index 6cfcd96..3511262 100644 --- a/android/src/main/java/com/ovalmoney/fitness/manager/Manager.java +++ b/android/src/main/java/com/ovalmoney/fitness/manager/Manager.java @@ -485,13 +485,14 @@ private void processCalories(DataSet dataSet, WritableArray map) { private void processHeartRate(DataSet dataSet, WritableArray map) { for (DataPoint dp : dataSet.getDataPoints()) { + heartRateMap.putString("startDate", dateFormat.format(dp.getStartTime(TimeUnit.MILLISECONDS))); + heartRateMap.putString("endDate", dateFormat.format(dp.getEndTime(TimeUnit.MILLISECONDS))); + heartRateMap.putDouble("quantity", dp.getValue(dp.getDataType().getFields().get(0)).asFloat()); for(Field field : dp.getDataType().getFields()) { - WritableMap heartRateMap = Arguments.createMap(); - heartRateMap.putString("startDate", dateFormat.format(dp.getStartTime(TimeUnit.MILLISECONDS))); - heartRateMap.putString("endDate", dateFormat.format(dp.getEndTime(TimeUnit.MILLISECONDS))); - heartRateMap.putDouble("quantity", dp.getValue(field).asFloat()); - map.pushMap(heartRateMap); - } + heartRateMap.putDouble(field.getName(), dp.getValue(field).asFloat()); + } + map.pushMap(heartRateMap); + } }