Wear OS Tail 기능 구현: 심박수 실시간 모니터링과 백그라운드 측정
Wear OS 앱에서 사용자의 심박수를 실시간으로 모니터링하고, 앱이 백그라운드에 있어도 안정적으로 데이터를 측정하는 Tail 기능 구현 방법을 소개합니다.
1. Tail 기능이란?
Tail 기능은 센서 데이터를 앱 실행 중뿐 아니라, 백그라운드나 화면이 꺼진 상태에서도 주기적으로 수집하고 업데이트하는 기능입니다. Wear OS 환경에서는 심박수 실시간 측정뿐 아니라 운동 중이나 일상 생활 중에도 정확한 데이터 수집을 위해 백그라운드 측정이 필수입니다.
2. Wear OS 심박수 측정 방식
- Wear OS는
ExerciseClient
API와Health Services API
를 제공합니다. ExerciseClient
는 운동 세션을 시작하고 심박수 데이터를 실시간 수신하는 데 사용됩니다.Health Services API
는 더 최신이며 다양한 헬스 데이터를 제공하지만, 일부 기기에서 제한이 있을 수 있습니다.
참고: ExerciseClient
는 Wear OS 3.0 이상, 특히 갤럭시 워치4 이상에서 안정적입니다.
3. Tail 기능 구현 핵심 포인트
1) 실시간 심박수 측정 및 UI 표시
ExerciseClient
의 ExerciseUpdateListener
를 통해 심박수 데이터를 실시간으로 받아 처리하고, 앱 UI에 심박수, 운동 시간, 칼로리 소모량 등을 동적으로 표시합니다.
2) 백그라운드 측정 유지
워치 화면이 꺼져도 데이터를 측정하려면 Foreground Service
를 사용해야 합니다. 백그라운드 작업 제약이 있는 Wear OS 환경을 고려해 Foreground Service에 적절한 알림을 표시하여 측정을 지속시킵니다. 권한 설정(예: BODY_SENSORS_BACKGROUND
)도 중요합니다.
3) Tile 업데이트 연동
Wear OS Tile에 최신 심박수, 운동 시간 등의 정보를 주기적으로 업데이트합니다. TileUpdateRequester
를 활용해 앱 내에서 데이터 변동 시 Tile 업데이트를 트리거할 수 있습니다.
4. 주요 코드 예시
ExerciseClient 초기화 및 심박수 데이터 수신
val exerciseClient = ExerciseClient(context)
val exerciseConfig = ExerciseConfig.builder(ExerciseType.WALKING)
.build()
exerciseClient.startExercise(exerciseConfig)
val listener = object : ExerciseUpdateListener {
override fun onExerciseUpdate(update: ExerciseUpdate) {
val bpm = update.bpm
val calories = update.calories
val duration = update.duration
// UI 업데이트 및 Tile 갱신 처리
updateUi(bpm, calories, duration)
requestTileUpdate()
}
}
exerciseClient.registerExerciseUpdateCallback(listener)
Foreground Service 알림 설정 예시
val notification = NotificationCompat.Builder(context, CHANNEL_ID)
.setContentTitle("운동 중")
.setContentText("심박수 측정 중")
.setSmallIcon(R.drawable.ic_heart)
.build()
startForeground(SERVICE_ID, notification)
5. 권한 설정 예시 (AndroidManifest.xml)
<uses-permission android:name="android.permission.BODY_SENSORS" />
<uses-permission android:name="android.permission.BODY_SENSORS_BACKGROUND" /> <!-- Wear OS 3.5 이상 필요 -->
6. 마무리
Wear OS에서 Tail 기능을 구현하면 운동 중 뿐 아니라 평소에도 사용자의 심박수와 운동 정보를 꼼꼼하게 기록할 수 있습니다. ExerciseClient
를 이용한 실시간 심박수 모니터링과 백그라운드 Foreground Service
, 그리고 Tile 업데이트 연동이 핵심입니다.
향후 Wear OS 기반 건강 관리 앱 개발 시 꼭 고려해야 할 필수 기능입니다.
'모바일 앱(안드로이드)' 카테고리의 다른 글
Wear OS Tiles로 실시간 심박수와 운동 시간 표시하기 (1) | 2025.08.13 |
---|---|
Wear OS 타일로 실시간 심박수와 운동 시간 표시하기 (ft chatGPT, 예시코드) (2) | 2025.08.11 |
AI 가 안드로이드 개발자에게 미치는 영향 ... (ft Google IO 2025) (3) | 2025.08.03 |
Wear OS 워치에서 심박수 측정 → 30초마다 폰으로 전송하기 (2) | 2025.08.02 |
Kotlin으로 복식 경기 Round-Robin 매칭 구성하기 (2) | 2025.07.29 |