Android での歩数連携

Android で歩数データの連携を実現する際、これまでは Google Fit が利用されていました。しかし、**2025年6月30日** をもって Google Fit の API は廃止され、新たに Health Connect を使用する必要があります。
当初 2024年の年末に廃止を予定していましたが、半年間延長されています。

> The Google Fit APIs, including the Google Fit REST API, will no longer be available after June 30, 2025. As of May 1, 2024, developers cannot sign up to use these APIs.

https://developers.google.com/fit/android

# HealthConnect

HealthConnect は自身のアプリと健康に関するデータを統合する仕組みになります。データは一元管理され、アプリで必要な時に読み込んでユーザーに表示したり、ユーザーの入力を書き込んで他のアプリとも共有したりします。

https://developer.android.com/health-and-fitness/guides/health-connect

HeatlthConnect の導入はドキュメントが充実しており進めやすいです。

## 対応 OS

対応 OS に関していくつか注意が必要です。

**Android 13** 以前をターゲットとする場合は、ユーザーのデバイスに **HealthConnect アプリ**のインストールが必要になります。 **Android 14** 以降であればインストールは不要です。

https://play.google.com/store/apps/details?id=com.google.android.apps.healthdata&hl=en

また HealthConnect を利用できるのは **Android 9** 以降になります。
以下に注意書きとして、 SDK は Android 8 から対応していますが、 HeathConnect アプリの方が Android 9 以降にしか対応していないためです。

> Note: The Health Connect SDK supports Android 8 (API level 26) or higher, while the Health Connect app is only compatible with Android 9 (API level 28) or higher. This means that third-party apps can support users with Android 8, but only users with Android 9 or higher can use Health Connect.

https://developer.android.com/health-and-fitness/guides/health-connect/develop/get-started#step-2

### WearOS

なお、ウォッチと直接連携したい場合は、 HealthConnect は利用できなくて **Heath Services API** を利用することになります。こちらについてはこの記事では扱いません。

https://developer.android.com/health-and-fitness/guides/health-services

# Toolbox

HealthConnect の統合開発に向けて便利な Toolbox が用意されています。この Toolbox から HealthConnect に対して読み書きが可能になっています。

例えば、自身のアプリで HealthConnect から歩数データを読み込んで表示したいユースケースを想定します。 HealthConnect に十分なデータが蓄積していない場合は、 Toolbox から HealthConnect に対して歩数データを書き込み、自身のアプリでそれを読み込んで表示を確認するといった使い方ができます。

Toolbox は以下からダウンロードできます。

https://developer.android.com/health-and-fitness/guides/health-connect/test/health-connect-toolbox

## 連携データ

Toolbox で扱えるデータの一覧です。 API を確認するとここに記載のない項目も HealthConnect としては扱えます。 Toolbox で扱っていないデータを確認したい場合は、自前で Toolbox に相当するコードを書く必要があります。
以下はそれぞれのカテゴリで読み書きできる項目です。

### Activity
- ActiveCaloriesBurned （アクティブ消費カロリー）
- CyclingPedalingCadenceSeries （サイクリングペダル回転数シリーズ）
- Distance （距離）
- ElevationGained （高度獲得）
- ExerciseSession （運動セッション）
- FloorsClimbed （登った階数）
- PowerSeries （パワーシリーズ）
- SpeedSeries （速度シリーズ）
- Steps （ステップ数）
- StepsCadenceSeries （ステップ回転数シリーズ）
- TotalCaloriesBurned （総消費カロリー）
- Vo2Max （最大酸素摂取量）
- WheelchairPushes （車椅子プッシュ）

### Body measurements
- BasalMetabolicRate （基礎代謝率）
- BodyWaterMass （体水分量）
- BoneMass （骨量）
- Height （身長）
- LeanBodyMass （除脂肪体重）
- Weight （体重）

### Sleep
- SleepSession （睡眠セッション）

睡眠のステージは 7段階で取得可能になっていて、 `records` の配列にステージごとの睡眠記録が振り分けられています。

1. AWAKE: 覚醒（ベッドの中か外かは不明）
2. SLEEPING: 睡眠（浅い、深い、レム以外）
3. OUT_OF_BED: 起床（ベッドから出た）
4. LIGTH: 浅い睡眠
5. DEEP: 深い睡眠
6. REM: レム睡眠
7. AWAKE_IN_BED: 覚醒（ベッドの中）

### Vitals
- BasalBodyTemperature （基礎体温）
- BloodGlucose （血糖値）
- BloodPressure （血圧）
- BodyTemperature （体温）
- HeartRateSeries （心拍数シリーズ）
- HeartRateVariabilityRmssd （心拍変動RMSSD）
- OxygenSaturation （酸素飽和度）
- RespiratoryRate （呼吸数）
- RestingHeartRate （安静時心拍数）

### Cycle tracking
- CervicalMucus （頸管粘液）
- MenstruationPeriod （月経周期）
- MenstruationFlow （月経量）
- OvulationTest （排卵検査）
- SexualActivity （性活動）
- IntermenstrualBleeding （月経間出血）

### Nutrition
- Hydration （水分補給）
- Nutrition （栄養）

### Nutrition（栄養素）
上記の Nutrition の項目をさらに細分化して扱うことができます。

- biotin （ビオチン）
- caffeine （カフェイン）
- calcium （カルシウム）
- chloride （塩化物）
- cholesterol （コレステロール）
- chromium （クロム）
- copper （銅）
- dietaryFiber （食物繊維）
- energy （エネルギー）
- energyFromFat （脂肪由来のエネルギー）
- folate （葉酸）
- folicAcid （葉酸）
- iodine （ヨウ素）
- iron （鉄）
- magnesium （マグネシウム）
- manganese （マンガン）
- mealType （食事タイプ、例: breakfast（朝食））
- molybdenum （モリブデン）
- monounsaturatedFat （一価不飽和脂肪）
- niacin （ナイアシン）
- pantothenicAcid （パントテン酸）
- phosphorus （リン）
- polyunsaturatedFat （多価不飽和脂肪）
- potassium （カリウム）
- protein （タンパク質）
- riboflavin （リボフラビン）
- saturatedFat （飽和脂肪）
- selenium （セレン）
- sodium （ナトリウム）
- sugar （砂糖）
- thiamin （チアミン）
- totalCarbohydrate （総炭水化物）
- totalFat （総脂肪）
- transFat （トランス脂肪）
- unsaturatedFat （不飽和脂肪）
- vitaminA （ビタミンA）
- vitaminB12 （ビタミンB12）
- vitaminB6 （ビタミンB6）
- vitaminC （ビタミンC）
- vitaminD （ビタミンD）
- vitaminE （ビタミンE）
- vitaminK （ビタミンK）
- zinc （亜鉛）

なお、この項目は、 Toolbox のスクリーンショットを ChatGPT に直接読んでもらって、マークダウンの整形と翻訳をお願いしました。

## 作業ログ
https://zenn.dev/ykws/scraps/23249e30ed1360

# 歩数連携

ここまでが HealthConnect の前提で実際の歩数連携については、再掲になりますが、 **Get started** のドキュメントにガイダンスがありそちらを参照するのが確実です。

https://developer.android.com/health-and-fitness/guides/health-connect/develop/get-started

# 関連記事
https://qiita.com/developer_rh1229/items/e49da0fc8af3d5e380ab