센서·건강 데이터

스마트폰 센서

기본 6개 수집 유형의 의미와 실제 저장 값을 확인합니다.

기준일
이 페이지에서

현재 기본 수집 유형

기준 registry에는 아래 6종이 있습니다. 실제 실행은 유형 선택, 센서 존재, 권한과 foreground service 상태에 달려 있습니다.

유형수집 의미저장 내용·해석
accelerometer휴대폰 가속도버스트 샘플의 X·Y·Z 평균, 샘플 수, 윈도우/버스트 길이
device_motion회전·자기장·중력·자세센서별 카운트와 요약, 마지막 회전 벡터 등
screen_state기기 화면·잠금 상태상태 스냅샷, 화면 이벤트, 배터리 비율·상태
gps위치마지막 위치의 위도·경도·정확도 등
telephony통신 상태 업데이트신호 업데이트 횟수와 리스너 등록 여부
telephony_call통화 상태 변화추정 통화 상태·시작/종료 시각·통화 길이

가속도는 연속 원시 파형을 저장하는 방식이 아닙니다. 통신 기록의 signalUpdateCount 역시 신호 세기 자체가 아닙니다. screen_state는 연구 앱 체류 시간이나 다른 앱 사용 이력을 뜻하지 않습니다.

주기와 누락 해석

수집기는 기본 60,000ms 윈도우로 시작합니다. 실제 샘플링과 배치 생성은 유형별로 다릅니다. 가속도는 버스트 요약이고, 통화 기록은 완료 이벤트가 없으면 배치 생성을 건너뜁니다. 따라서 모든 유형이 매분 한 행을 만드는 것으로 해석하면 안 됩니다.

일부 유형은 측정값이 없더라도 카운트 0의 상태 배치를 남깁니다. 기록 행이 존재하는 것과 유효한 측정값이 있는 것은 다릅니다. 위치는 마지막 알려진 값일 수 있으므로 시각과 정확도를 함께 확인합니다.

가속도 payload 예제

다음 수치는 가상의 설명용 값이며 실제 참여자 데이터가 아닙니다.

CODE
{
  "sensor": "accelerometer",
  "windowMs": 60000,
  "burstDurationMs": 1000,
  "windowDurationMs": 60000,
  "sampleCount": 40,
  "avg": { "x": 0.12, "y": 9.72, "z": 0.35 }
}

Android 가속도 값은 m/s² 기준입니다. SensorPlugin.pull()은 이 payload 대신 배치의 sampleCount를 Event.valueNum에 담고 unit="samples"로 반환합니다. 분석에는 Room 배치 payload를 확인해야 합니다.

권한과 저장

위치에는 위치 권한과 시스템 위치 서비스가, 통신·통화에는 전화 상태 권한이 필요합니다. 기록은 sensor_sample_batches의 payloadJson 등으로 저장하고 센서 동기화 경로로 전송합니다. 권한과 데이터 형식을 참고하세요.

기본 비활성·향후 항목

wifi, nearby_device의 수집 코드는 있지만 기본 registry 6종에는 없습니다. 연구 앱 사용 시간 계측은 발표자료에서 추가 예정으로 구분되어 있습니다. 선언된 타입이나 과거 README를 근거로 기본 지원을 확대하지 않습니다.

문서 근거

현재 작업 트리 기준 · 소스 경로 · HEAD 8213e6b7

  • app/src/main/assets/manifests/plugins/registry.json
  • plugins/sensor/src/main/java/com/hdil/datacollection/plugins/sensor/auto/SensorAutoCollectorStarter.kt
  • plugins/sensor/src/main/java/com/hdil/datacollection/plugins/sensor/SensorPlugin.kt
  • plugins/sensor/src/main/java/com/hdil/datacollection/plugins/sensor/ingest/SensorIngestionService.kt
  • core/db/src/main/java/com/hdil/datacollection/db/entity/sensor/SensorEntities.kt
DTRAC Android연세대학교 · 이봉신 연구팀