이전블러그에서 구글 site https://takeout.google.com/ 를 통해 수면 패턴을 구할 수 있었습니다. 웹에서 신청해서 메일로 데이터를 수령하는 식이었습니다. 이번에는 안드로이드폰에서 직접 수면 패턴 데이터를 구하려고 합니다.
데이터를 구한 방법은 복잡합니다. 샤오미 밴드를 통해 원본 데이터를
취합해서 샤오미의 Mi Fit와 google fit(피트니스) 동기화로 google 서버에 보내집니다. 절차를 단순화하기 위하여 바로 샤오미에서
제공하는 API를 사용하려고 했으나
API를 사용하려면 샤오미 개발자로 등록해야 합니다. 등록시에 신분증 사진을 찍어 보내라고 해서 샤오미 API는 포기하고 다시 구글 fit의 데이터를 이용하는 방법으로 돌아
갑니다. 전체 데이터 흐름은 다음과
같습니다
1) Dependencies에
"com.google.android.gms:play-services-fitness:20.0.0"
"com.google.android.gms:play-services-auth:19.0.0"
버전으로 업그레이드
2) STEP COUNT가 아닌 SLEEP SEGMENT로 변경
3) FitnessOptions에
addDataType(DataType.TYPE_SLEEP_SEGMENT,
FitnessOptions.ACCESS_READ) 추가
등 입니다.
Goole Fit API를 사용하는 안드로이드앱을
등록하는 절차가 아래 link에
https://developers.google.com/fit/android/get-started
나와 있습니다. 다시 정리하면
1) Google Account를 만들던가 있던
account 사용
2) Android Studio -> Android SDK Manager
-> SDK Tools 밑에서 Google Play
services 설치
3) Android Studio에서 새로운 project를 생성하거나 샘플 프로그램을 import. 그리고 Application ID및 package name 수정
4) Android Studio -> 오른쪽 tab에서 Gradle
-> Project 이름 -> Tasks -> android ->
signingReport로 SHA1 확인
5) Google API Console에 https://console.cloud.google.com/flows/enableapi?apiid=fitness 접속
6) Continue -> Credential(사용자 인증 정보) -> New Credential(+ 사용자
인증 정보 만들기) -> OAuth Client ID(OAuth 클라이언트 ID) -> Application type으로 Android 설정
7) 4단계에서 확인한 SHA1과 package 이름 입력하여 OAuth Client ID 생성. Android 앱은 client ID만
만들어지고 client secret는 만들어지지 않음에 유의.
8) OAuth Client ID를 다운로드.
google-services.json이름으로 app 폴더에 저장
9) OAuth 동의 화면 -> 게시상태를 프로덕션 단계로 변경
9) 프로그램 수정 및 run
안드로이드폰 결과 화면은 아래에 있습니다.
여기에 사용된 프로그램도 Github https://github.com/yoojchul/sleep-google-fit 에 있습니다.
댓글 없음:
댓글 쓰기