android wear healthCare API

Assist·2023년 3월 6일
0

Android

목록 보기
8/21

음..... 회사에서 신기한걸 시도하네요.. 보안상 말은 못하지만
한번도 시도를 안해본 android os 바탕의 wear 기기의 app을 만들어야 합니다.

그래서 제가 만든 앱 바탕으로 설명을 해볼려고 합니다.

프로젝트 생성 방법 :
https://developer.android.com/training/wearables/apps/creating?hl=ko
뭐 이건 설명 안하셔도 이미 만드셨겠지만 ....

  1. google Health Care API 을 사용해라!
    흠.... 처음 듣자마자 이게 뭐지.. 하고 구글에 달려가 예제들을 보고 삽질하다가 만들었네요. 저의 앱 시나리오? 흐름? 을 생각하면

1.구글 헬스케어API을 사용할수 있는가?

아닐시-> bye bye
맞을시-> okay 검사 시작
okay 이런식으로 가자! 해서 뭐가 있을까 했는데
예제를 보니 ExerciseTypeCapabilities 을 예제로 쓴 앱 이 있더라고요.
온도 칼로리 계산 ~ 신기한게 있어서 한번 써 보았습니다.

시작전!! 라이브러리 다운받고 가세요!!

https://developer.android.com/training/wearables/health-services/active

//전 view에 코드를 두는걸 싫어해서 따로 뺏어요(이런식으로라도 클린코드를..)

class WearCheckManger {
    private var exerciseCapabilities: ExerciseTypeCapabilities? = null

    /**
     * 해당 wear 가 Google Health API 를 수행 가능한지 검사하는 함수
     */
    private suspend fun getCheckSensor(): ExerciseTypeCapabilities? {
        val healthClient = HealthServices.getClient(MainApplication.appContext /*context*/)
        val measureClient = healthClient.exerciseClient
        val capabilities = measureClient.getCapabilitiesAsync().await()
        if(ExerciseType.RUNNING in capabilities.supportedExerciseTypes){
            exerciseCapabilities = capabilities.getExerciseTypeCapabilities(ExerciseType.RUNNING)
        }
        return exerciseCapabilities
    }
	//이건 view로 보내주는 함수 ~ 
    suspend fun hasExerciseCapability() : Boolean{
        return getCheckSensor() != null
    }
}

suspend가 뭔지 까먹어서 호출 못하고 낑낑 거리다가 사수분한테 걸려서
혼났습니다 ㅠ 그날 이후로 공부 열심히 하고 있어요 선배님 ㅠㅠ

자 이걸 view 쪽에서 알아야 하니 전 이런식으로

        viewLifecycleOwner.lifecycleScope.launch {
            viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED){
            	//검사 성공 (・ω・)b
                if(WearMainManger().hasExerciseCapability()){
                    Log.d(TAG , "Success")
                    binding.txtIntro.text = "서비스 가능"
                    //권한 체크 
                    permissionCheck()

                }else{
                   Log.e(TAG,"Fail to check Exercise")
                    binding.txtIntro.text = "서비스 못해여~" 
                    binding.btnFinish.visibility = View.VISIBLE
                }
            }
        }

여기서 전 viewLifecycleOwner.lifecycleScope 을 썻지만 코루틴을 쓰던지 맘대로 하쇼

그럼 다음은 심박수 체크를 하는걸 포스팅해 보겠습니다
ㅂㅂ

나도 워치 가지고 싶어...

profile
안드로이드만 좋아하는 특이한 개발자

0개의 댓글