수집 경로
| 경로 | 아티팩트 | 무엇을 주는가 | 권한/제약 |
|---|---|---|---|
| Samsung Health Sensor SDK | samsung-health-sensor-api-1.4.1.aar | 생체신호 raw/측정 | Privileged SDK, Samsung Health 앱 필요, 워치 전용 |
| Wear Health Services | androidx.health.services | 운동/활동 지표 | 표준 Wear OS API |
| Android SensorManager / FusedLocation | — | 모션·위치 raw | 표준 Android 권한 |
| Samsung Health Monitor (별도 앱) | — | 혈압·ECG 인증 측정 | 외부 API 접근 불가, 지역 잠금 |
생체신호 — Samsung Health Sensor SDK
| 센서/지표 | 설명 | 측정 주기 | 권한 | 이유 |
|---|---|---|---|---|
| PPG (GREEN/IR/RED) | 광혈류측정 raw 파형 | ✅ ~25Hz | ❌ 파트너 승인 필요 | PPG_CONTINUOUS 자체는 ~25Hz로 스트리밍할 수 있지만, raw PPG에 접근하려면 Samsung 파트너/privileged 승인이 필요합니다. 일반 앱은 차단되며 이 앱도 수집하지 않습니다. |
| 심박수 (HR) | 분당 심박 | ✅ ~1Hz | ✅ BODY_SENSORS | HEART_RATE_CONTINUOUS 스트리밍 |
| 가속도 | 3축 가속 raw | ✅ ~25Hz+ | ✅ BODY_SENSORS | ACCELEROMETER_CONTINUOUS 스트리밍 (SDK 경유) |
| 산소포화도 (SpO₂) | 혈중 산소 % | ❌ 불가 | ❌ 파트너 승인 | on-demand 세션(~30초 후 단일값). 움직이면 실패. 연속 트래커 없음 |
| ECG (심전도) | 심전도 파형 | ❌ 단발 세션 | ❌ 파트너 승인 | 30초 측정 세션. 양손 접촉 유지 필요. 백그라운드 연속 불가 |
| BIA (체성분) | 임피던스 체성분 | ❌ 불가 | ❌ 파트너 승인 | 단발 측정. 양손 접촉 필요 |
| 피부온도 | 손목 피부온(심부 아님) | ⚠️ 조건부 | ⚠️ SSENSOR (Watch5+) | Watch5+ 벤더 센서(SensorManager 직접 읽기). privileged SSENSOR 권한 없으면 null. 연속 모드는 분 단위 저주파 |
| 땀손실 (SWEAT_LOSS) | 운동 중 추정 수분손실 | ❌ 불가 | ❌ 파트너 승인 | 운동 종료 시 누적 추정값 1개 |
‘측정 주기가 있다’ ≠ ‘권한이 있다’
측정 주기 열은 그 주기로 스트리밍할 수 있다는 뜻일 뿐, 접근 권한과는 별개입니다. Samsung Health
Sensor SDK는 privileged라 Samsung Health 앱 + 워치 전용이고, raw PPG처럼 민감한 신호는
파트너/privileged 승인이 있어야 열립니다. 승인 없는 일반 앱은 PPG_CONTINUOUS가 ~25Hz여도 막힙니다.
이 앱이 SDK로 실제 받는 건 심박(HR continuous)뿐, raw PPG는 안 받습니다.
활동/운동 — Wear Health Services
| 지표 | 설명 | 측정 주기 | 권한 | 이유 |
|---|---|---|---|---|
| 걸음 수 | 누적 걸음 수 | ✅ | ✅ ACTIVITY_RECOGNITION | STEPS 델타/누적. 갱신 빈도는 기기 의존 |
| 보행 속도 | 이동 속도 | ✅ | ✅ ACTIVITY_RECOGNITION (+위치) | SPEED. GPS 활성 시 정확 |
| 보행 페이스 | 단위거리당 시간 | ✅ | ✅ ACTIVITY_RECOGNITION | PACE |
| 이동거리 | 누적 거리 | ✅ | ✅ ACTIVITY_RECOGNITION | DISTANCE 누적 |
| 케이던스 | 분당 걸음수 | ✅ | ✅ ACTIVITY_RECOGNITION | STEPS_PER_MINUTE |
| 고도/층수 | 오른 층수 | ⚠️ 부분 | ✅ 권한 불필요 (기압계) | FLOORS/기압계. 이벤트성이라 초 단위로는 의미가 약함 |
1Hz를 항상 보장하진 않습니다
Health Services는 ‘스트리밍 가능’으로 표시돼도 기기·전원 모드에 따라 갱신이 1초보다 느려질 수
있습니다. 표의
~1Hz는 상한값이지 보장값이 아닙니다.
모션/위치 raw — SensorManager / FusedLocation
| 센서 | 설명 | 측정 주기 | 권한 | 이유 |
|---|---|---|---|---|
| 자이로스코프 | 3축 각속도 | ✅ 고주파 | ✅ 권한 불필요 | TYPE_GYROSCOPE. 수십~수백 Hz |
| 가속도계 | 3축 가속 | ✅ 고주파 | ✅ 권한 불필요 | TYPE_ACCELEROMETER |
| 지자기 | 방위/자기장 | ✅ | ✅ 권한 불필요 | TYPE_MAGNETIC_FIELD |
| 회전벡터 | 융합 방향 | ✅ | ✅ 권한 불필요 | TYPE_ROTATION_VECTOR (센서퓨전) |
| 기압계 | 고도 추정 | ✅ | ✅ 권한 불필요 | TYPE_PRESSURE |
| 위치 (GPS) | 좌표/이동 | ✅ ~1Hz | ✅ ACCESS_FINE_LOCATION | FusedLocation. 배터리 소모 큼 |
고주파 raw는 용량·배터리 부담이 큽니다
자이로·가속도를 수백 Hz로 받으면 저장 용량과 배터리가 빠르게 소모됩니다. 다운샘플링을 설계 단계에서 함께 고려하세요.
파생 지표 — 직접 트래커 없음
| 지표 | 설명 | 측정 주기 | 권한 | 이유 / 우회 |
|---|---|---|---|---|
| 스트레스 | 자율신경 긴장도 | ❌ 직접 불가 | ⚠️ Health Connect 읽기 | raw 트래커 없음(HRV 파생값). 우회: PPG/HR로 HRV 자작 계산 또는 Health Connect 읽기(비실시간) |
| 혈압 | 수축/이완기압 | ❌ 사실상 불가 | ❌ 외부 앱 전용 | SDK 트래커 없음. Samsung Health Monitor 별도 앱(커프 calibration·지역 잠금·API 차단) |
한눈에
고주파·초 단위로 받을 수 있는 것:
- 심박 (~1Hz), 가속도 (~25Hz+) — Samsung SDK (raw PPG는 파트너 승인 필요·미수집)
- 자이로·가속도·지자기·기압 (수십~수백 Hz) — SensorManager
- GPS (~1Hz) — FusedLocation
- 걸음·속도·거리·케이던스 (~1Hz, 기기 의존) — Health Services
on-demand 단발 측정이라 초 단위로는 받을 수 없는 것: SpO₂·ECG·BIA·땀손실.
조건부: 피부온도 (Watch5+, 저주파).
경로 자체가 없는 것: 혈압(외부 앱), 실시간 스트레스(HRV를 직접 계산해야 함).
MVP 우선순위
- 확실하고 쉬움 — 걸음·속도·거리(HS) + 자이로·가속도(SensorManager) + HR continuous(SDK)
- 조건부 — 피부온도(Watch5+ 분기), GPS(배터리 트레이드오프)
- 파이프라인 자작 — 스트레스(HRV 계산), SpO₂ 근사(PPG R-ratio)
- 보류 — 혈압
앱 사용자용 요약은 E. 센서 가이드에 있습니다. 여긴 API·근거 위주의 개발자 레퍼런스입니다.