google fit faq声明为了匹配官方google fit app的距离和步长值,我们应该使用以下数据请求
DataSource ESTIMATED_STEP_DELTAS = new DataSource.Builder()
.setDataType(DataType.TYPE_STEP_COUNT_DELTA)
.setType(DataSource.TYPE_DERIVED)
.setStreamName("estimated_steps")
.setAppPackageName("com.google.android.gms")
.build();
DataReadRequest readRequest = new DataReadRequest.Builder()
.aggregate(ESTIMATED_STEP_DELTAS, DataType.AGGREGATE_STEP_COUNT_DELTA)
.aggregate(DataType.TYPE_DISTANCE_DELTA, DataType.AGGREGATE_DISTANCE_DELTA)
.aggregate(DataType.TYPE_CALORIES_EXPENDED, DataType.AGGREGATE_CALORIES_EXPENDED)
.aggregate(DataType.TYPE_ACTIVITY_SEGMENT, DataType.AGGREGATE_ACTIVITY_SUMMARY)
.bucketByTime(1, TimeUnit.DAYS)
.setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS)
.build();
以上内容会返回正确的步数(与Google健身应用匹配)但返回的距离始终与官方Google健身应用中显示的距离不同。
我尝试使用DataSource
streamName构建类似的merge_distance_delta
距离,这会返回与Google https://fit.google.com/u/0/
DataSource ESTIMATED_DISTANCE_DELTAS = DataSource.Builder()
.setDataType(DataType.TYPE_DISTANCE_DELTA)
.setType(DataSource.TYPE_DERIVED)
.setStreamName("merge_distance_delta")
.setAppPackageName("com.google.android.gms")
.build()
使用上述数据源始终与https://fit.google.com/u/0/上显示的内容相匹配,有时与官方google fit应用相匹配。
谷歌适合云的同步似乎是随机的,没有办法强制它,所以如果谷歌适合的应用程序记录这个距离,有没有办法弄清楚它如何计算距离,为什么是它与中止的不同 DataType.TYPE_STEP_COUNT_DELTA
我是否可以使用特定的streamName来获得与google fit应用相同的距离?