Android StudioでGoogleFitのデータを画面に表示したいです。
現在アプリを実行するとGoogleアカウント認証が始まり、認証が終わると、「アプリが身体活動にアクセスしようとしています。許可しますか?」といった文言が表示され、許可を押すという動作まで作ることができました。
以下のコードでMainActivity.javaは書いています。
//use response data hereと書くところに処理を追記すればよいと思っています。
resposneに取得した結果が入っていると思うのですが、アプリの画面に表示させる方法が分かりません。
ご教示いただければと存じます。
Java
1package com.example.baastest; 2 3import android.app.Activity; 4import android.content.Intent; 5import android.os.Bundle; 6import android.util.Log; 7import android.widget.TextView; 8 9import androidx.appcompat.app.AppCompatActivity; 10 11import com.google.android.gms.auth.api.signin.GoogleSignIn; 12import com.google.android.gms.auth.api.signin.GoogleSignInAccount; 13import com.google.android.gms.fitness.Fitness; 14import com.google.android.gms.fitness.FitnessOptions; 15import com.google.android.gms.fitness.data.DataType; 16import com.google.android.gms.fitness.request.DataReadRequest; 17 18import java.util.Calendar; 19import java.util.Date; 20import java.util.concurrent.TimeUnit; 21 22public class MainActivity extends AppCompatActivity { 23 final int GOOGLE_FIT_PERMISSIONS_REQUEST_CODE = System.identityHashCode(this) & 0xFFFF; 24 25 @Override 26 protected void onCreate(Bundle savedInstanceState) { 27 super.onCreate(savedInstanceState); 28 setContentView(R.layout.activity_main); 29 FitnessOptions fitnessOptions = FitnessOptions.builder() 30 .addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ) 31 .addDataType(DataType.AGGREGATE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ) 32 .build(); 33 GoogleSignInAccount account = GoogleSignIn.getAccountForExtension(this, fitnessOptions); 34 35 if (!GoogleSignIn.hasPermissions(account, fitnessOptions)) { 36 GoogleSignIn.requestPermissions( 37 this, // your activity 38 GOOGLE_FIT_PERMISSIONS_REQUEST_CODE, // e.g. 1 39 account, 40 fitnessOptions); 41 } else { 42 accessGoogleFit(); 43 } 44 45 } 46 47 @Override 48 protected void onActivityResult(int requestCode, int resultCode, Intent data) { 49 super.onActivityResult(requestCode, resultCode, data); 50 if (resultCode == Activity.RESULT_OK) { 51 if (requestCode == GOOGLE_FIT_PERMISSIONS_REQUEST_CODE) { 52 accessGoogleFit(); 53 } 54 } 55 } 56 57 private void accessGoogleFit() { 58 Calendar cal = Calendar.getInstance(); 59 cal.setTime(new Date()); 60 long endTime = cal.getTimeInMillis(); 61 cal.add(Calendar.YEAR, -1); 62 long startTime = cal.getTimeInMillis(); 63 64 DataReadRequest readRequest = new DataReadRequest.Builder() 65 .aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA) 66 .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) 67 .bucketByTime(1, TimeUnit.DAYS) 68 .build(); 69 70 FitnessOptions fitnessOptions = FitnessOptions.builder() 71 .addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ) 72 .addDataType(DataType.AGGREGATE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ) 73 .build(); 74 GoogleSignInAccount account = GoogleSignIn 75 .getAccountForExtension(this, fitnessOptions); 76 77 78 String TAG ="MainActivity"; 79 Fitness.getHistoryClient(this, account) 80 .readData(readRequest) 81 .addOnSuccessListener(response -> { 82 // Use response data here 83// TextView textView = findViewById(R.id.text_view); 84// textView.setText(response.toString()); 85 86 87 Log.d(TAG, "OnSuccess()"); 88 }) 89 .addOnFailureListener(e -> { 90 Log.d(TAG, "OnFailure()", e); 91 }); 92 } 93 94}
また、ビューのactivity_main.xmlもどのように記載していいかわかりません。
よろしくお願いいたします。
追記
デバッグを行い、responseの中身を確認したところ
歩数が取れていることはわかりました。
このcount=54をアプリの画面に表示させたいと考えています。
どのように記載すればよいかご教示下さい。
なおコードを記述する際に参考にしたサイトは
https://developers.google.com/fit/android/get-started
あなたの回答
tips
プレビュー