음..... 회사에서 신기한걸 시도하네요.. 보안상 말은 못하지만
한번도 시도를 안해본 android os 바탕의 wear 기기의 app을 만들어야 합니다.
그래서 제가 만든 앱 바탕으로 설명을 해볼려고 합니다.
프로젝트 생성 방법 :
https://developer.android.com/training/wearables/apps/creating?hl=ko
뭐 이건 설명 안하셔도 이미 만드셨겠지만 ....
아닐시-> 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 을 썻지만 코루틴을 쓰던지 맘대로 하쇼
그럼 다음은 심박수 체크를 하는걸 포스팅해 보겠습니다
ㅂㅂ
나도 워치 가지고 싶어...