以某种方式,我遇到了Google Fit Android SDK的终点。目前,我正在构建一个应用程序,该应用程序读取,显示和处理来自Google Fit的数据,以使用户了解其锻炼行为。
我的情况如下:我曾经在Google Pixel上进行测试 - 一切都很好,我从Google Fit收到了全部(超过20个)会议。一个星期前,我已经切换到HTC10-在此设备上,我只收到Google Fit的4(!)会话 - 相同的应用,相同的代码,相同的Google Fit帐户(在Google Fit App中我仍然可以看到所有锻炼和会议)。我要阅读的会话不是使用我的应用程序创建的,而是使用Google Fit应用程序本身创建的。但是,尽管如此,在旧手机上,我可以阅读它们,在新的手机上,我不能阅读。
让我粘贴一些代码以增加清晰度。
googleapiclient设置
googleApiClient = GoogleApiClient.Builder(context)
.addApi(Fitness.HISTORY_API)
.addApi(Fitness.SESSIONS_API)
.addApi(Fitness.RECORDING_API)
.addApi(Fitness.GOALS_API)
.addScope(Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE))
.addScope(Scope(Scopes.FITNESS_BODY_READ_WRITE))
连接后,我订阅了几个录音带(TYPE_WORKOUT_EXERCISE
,TYPE_WEIGHT
,TYPE_CALORIES_EXPENDED
)
SessionReadRequest
:
val sessionRequest = SessionReadRequest.Builder()
.setTimeInterval(startTime, endTime, TimeUnit.MILLISECONDS)
.read(DataType.TYPE_WORKOUT_EXERCISE)
.readSessionsFromAllApps()
.enableServerQueries()
.build()
阅读会议:
Fitness.SessionsApi.readSession(googleApiClient, sessionRequest)
.setResultCallback { result ->
Timber.d("Sessions result: %s", result.status)
Timber.d("Got %d sessions", result.sessions.size) // returns only 4! for 2014-NOW timerange
}
任何帮助将不胜感激。
Google Fit API仅从本地缓存返回数据,它将在您要求的两个日期之间返回数据,并在Google-fit应用中使用。