前提・実現したいこと
こんにちは、Android端末のGoogleFitに記録されている心拍数をHistoryAPIを使って取得したいです
試してみた所、Requestは帰ってきてStatusCodeはSUCCESSになっているのですが、中身がnullです
ご存知の方いましたら、教えていただけませんでしょうか?
よろしくお願いします。
発生している問題・エラーメッセージ
帰ってきたリザルトです
DataReadResult{status=Status{statusCode=SUCCESS, resolution=null}, dataSets=[], buckets=7 buckets}
該当のソースコード
kotlin
1package com.example.heartrate_historytest 2 3import android.app.Activity 4import android.content.Intent 5import android.support.v7.app.AppCompatActivity 6import android.os.Bundle 7import android.util.Log 8import com.google.android.gms.auth.api.signin.GoogleSignIn 9import com.google.android.gms.common.api.GoogleApiClient 10import com.google.android.gms.fitness.Fitness 11import com.google.android.gms.fitness.data.DataType 12import com.google.android.gms.fitness.request.DataReadRequest 13import java.util.concurrent.TimeUnit 14import java.util.* 15import com.google.android.gms.fitness.FitnessOptions 16 17class MainActivity : AppCompatActivity() { 18 19 private val REQUEST_OAUTH = 1 20 private val TAG = "HeartRateTest" 21 22 23 override fun onCreate(savedInstanceState: Bundle?) { 24 super.onCreate(savedInstanceState) 25 setContentView(R.layout.activity_main) 26 27 val fitnessOptions = FitnessOptions.builder() 28 .addDataType(DataType.TYPE_HEART_RATE_BPM, FitnessOptions.ACCESS_READ) 29 .addDataType(DataType.AGGREGATE_HEART_RATE_SUMMARY, FitnessOptions.ACCESS_READ) 30 .build() 31 32 if (!GoogleSignIn.hasPermissions(GoogleSignIn.getLastSignedInAccount(this), fitnessOptions)) { 33 GoogleSignIn.requestPermissions( 34 this, 35 REQUEST_OAUTH, 36 GoogleSignIn.getLastSignedInAccount(this), 37 fitnessOptions 38 ) 39 } else { 40 accessGoogleFit() 41 } 42 } 43 44 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { 45 if (resultCode == Activity.RESULT_OK) { 46 if (requestCode == REQUEST_OAUTH) { 47 accessGoogleFit() 48 } 49 } 50 } 51 52 private fun accessGoogleFit() { 53 val cal = Calendar.getInstance() 54 cal.time = Date() 55 val endTime = cal.timeInMillis 56 cal.add(Calendar.WEEK_OF_YEAR, -1) 57 val startTime = cal.timeInMillis 58 59 60 val readRequest = DataReadRequest.Builder() 61 .aggregate(DataType.TYPE_HEART_RATE_BPM, DataType.AGGREGATE_HEART_RATE_SUMMARY) 62 .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) 63 .bucketByTime(1, TimeUnit.DAYS) 64 .build() 65 66 val lastSignedInAccount = GoogleSignIn.getLastSignedInAccount(this) 67 68 if(lastSignedInAccount != null) { 69 Fitness.getHistoryClient(this, lastSignedInAccount) 70 .readData(readRequest) 71 .addOnSuccessListener { 72 Log.d(TAG, "onSuccess()") 73 } 74 .addOnFailureListener { e -> 75 Log.e(TAG, "onFailure()", e) 76 } 77 .addOnCompleteListener { 78 Log.d(TAG, "onComplete()") 79 } 80 }else{ 81 82 } 83 } 84} 85 86 87 88 89
試したこと
・OAuth 2.0クライアントを削除して再度作成
・アプリのGoogleFit認証を解除して再度認証
補足情報(FW/ツールのバージョンなど)
Android Studio 3.3.1
Kotlin 1.3.21
Library
com.google.android.gms:play-services-fitness:16.0.1
com.google.android.gms:play-services-auth:16.0.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。