Google Fit REST API を含む Google Fit API は、2025 年 6 月 30 日をもってご利用いただけなくなります 。2024 年 5 月 1 日以降、デベロッパーはこれらの API に登録して使用することはできません 。
移行先の API またはプラットフォームについては、ヘルスコネクト移行ガイド をご覧ください。ヘルスコネクトと Google Fit API、Fitbit Web API の比較については、ヘルスコネクトの比較ガイド をご覧ください。
ヘルスコネクトの詳細 と API との統合方法をご確認ください。
フィードバックを送信
Fitness API クライアントを作成する
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
この例では、Fitness API クライアントを作成する方法を示します。
注: この例では集計ステップのみが読み取られるため、Android の権限はありません。
が必要です。
次のように API クライアントを作成します。
FitnessOptions
インスタンスを作成し、
アプリのデータ型 とアクセスタイプ(読み取り/書き込み)
ニーズ:
ヒント: データの種類は慎重に選択してください。すべきでないこと
アプリで必要な場合に備えて、すべてのデータ型をリクエストします。指定されたタイプ
ユーザーに権限を付与するよう求めるスコープを決定します。単独
ユーザーがアプリに必要なデータの種類を指定することで、ユーザーがそのデータの種類を認識できる
できます。ユーザーは、明確に記述された制限付きへのアクセス権を、より容易に付与できる
あります。
val fitnessOptions = FitnessOptions.builder()
.addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
.addDataType(DataType.AGGREGATE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ)
.build()
API で使用する Account
オブジェクトのインスタンスを取得します。
val account = GoogleSignIn.getAccountForExtension(this, fitnessOptions)
ユーザーが以前に必要なデータアクセスを許可したかどうか、また、
承認フローを開始します。
if (!GoogleSignIn.hasPermissions(account, fitnessOptions)) {
GoogleSignIn.requestPermissions(
this, // your activity
GOOGLE_FIT_PERMISSIONS_REQUEST_CODE, // e.g. 1
account,
fitnessOptions)
} else {
accessGoogleFit()
}
承認フローが必要な場合は、ユーザーのレスポンスを処理します。
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
when (resultCode) {
Activity.RESULT_OK -> when (requestCode) {
GOOGLE_FIT_PERMISSIONS_REQUEST_CODE -> accessGoogleFit()
else -> {
// Result wasn't from Google Fit
}
}
else -> {
// Permission not granted
}
}
}
リクエストされたデータへのアクセスをユーザーが承認したら、フィットネス データを作成して
クライアント(たとえば、過去のフィットネスの読み書きを行うための HistoryClient
)
データなど)をアプリの目的やニーズに応じて作成します。
private fun accessGoogleFit() {
val end = LocalDateTime.now()
val start = end.minusYears(1)
val endSeconds = end.atZone(ZoneId.systemDefault()).toEpochSecond()
val startSeconds = start.atZone(ZoneId.systemDefault()).toEpochSecond()
val readRequest = DataReadRequest.Builder()
.aggregate(DataType.AGGREGATE_STEP_COUNT_DELTA)
.setTimeRange(startSeconds, endSeconds, TimeUnit.SECONDS)
.bucketByTime(1, TimeUnit.DAYS)
.build()
val account = GoogleSignIn.getAccountForExtension(this, fitnessOptions)
Fitness.getHistoryClient(this, account)
.readData(readRequest)
.addOnSuccessListener({ response ->
// Use response data here
Log.i(TAG, "OnSuccess()")
})
.addOnFailureListener({ e -> Log.d(TAG, "OnFailure()", e) })
}
フィードバックを送信
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンス により使用許諾されます。コードサンプルは Apache 2.0 ライセンス により使用許諾されます。詳しくは、Google Developers サイトのポリシー をご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-08-21 UTC。
[{
"type": "thumb-down",
"id": "missingTheInformationINeed",
"label":"必要な情報がない"
},{
"type": "thumb-down",
"id": "tooComplicatedTooManySteps",
"label":"複雑すぎる / 手順が多すぎる"
},{
"type": "thumb-down",
"id": "outOfDate",
"label":"最新ではない"
},{
"type": "thumb-down",
"id": "translationIssue",
"label":"翻訳に関する問題"
},{
"type": "thumb-down",
"id": "samplesCodeIssue",
"label":"サンプル / コードに問題がある"
},{
"type": "thumb-down",
"id": "otherDown",
"label":"その他"
}]
[{
"type": "thumb-up",
"id": "easyToUnderstand",
"label":"わかりやすい"
},{
"type": "thumb-up",
"id": "solvedMyProblem",
"label":"問題の解決に役立った"
},{
"type": "thumb-up",
"id": "otherUp",
"label":"その他"
}]
ご意見をお聞かせください
{"lastModified": "\u6700\u7d42\u66f4\u65b0\u65e5 2024-08-21 UTC\u3002"}
[[["わかりやすい","easyToUnderstand","thumb-up"],["問題の解決に役立った","solvedMyProblem","thumb-up"],["その他","otherUp","thumb-up"]],[["必要な情報がない","missingTheInformationINeed","thumb-down"],["複雑すぎる / 手順が多すぎる","tooComplicatedTooManySteps","thumb-down"],["最新ではない","outOfDate","thumb-down"],["翻訳に関する問題","translationIssue","thumb-down"],["サンプル / コードに問題がある","samplesCodeIssue","thumb-down"],["その他","otherDown","thumb-down"]],["最終更新日 2024-08-21 UTC。"]]