2021년 4월 20일 화요일

안드로이드폰에서 수면 패턴

 이전블러그에서 구글 site https://takeout.google.com/ 를 통해 수면 패턴을 구할 수 있었습니다.  웹에서 신청해서 메일로 데이터를 수령하는 식이었습니다. 이번에는 안드로이드폰에서 직접 수면 패턴 데이터를 구하려고 합니다.

 

데이터를 구한 방법은 복잡합니다. 샤오미 밴드를 통해 원본 데이터를 취합해서 샤오미의 Mi Fit google fit(피트니스) 동기화로 google 서버에 보내집니다절차를 단순화하기 위하여 바로 샤오미에서 제공하는  API를 사용하려고 했으나 API를 사용하려면 샤오미 개발자로 등록해야 합니다등록시에 신분증 사진을 찍어 보내라고 해서 샤오미 API는 포기하고 다시 구글 fit의 데이터를 이용하는 방법으로 돌아 갑니다전체 데이터 흐름은 다음과 같습니다




안드로이드 앱 프로그램은 안드로이드 공식 Fit sample 프로그램기반으로 하고 있습니다. 
변경된  내용은

 

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 IDpackage name 수정

4) Android Studio -> 오른쪽 tab에서 Gradle -> Project 이름 -> Tasks -> android -> signingReportSHA1 확인

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단계에서 확인한 SHA1package 이름 입력하여 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 에  있습니다.

댓글 없음:

댓글 쓰기