헬스 커넥트의 데이터 유형은 Record
의 하위 클래스인 객체에 저장됩니다.
각 데이터 유형에는 time
, zoneOffset
와 같은 일반 필드 또는 title
, count
, percentage
와 같은 특정 필드가 연결되어 있습니다.
일부 필드는 long, double, string과 같은 기본 유형을 사용하는 반면 다른 필드는 열거형 및 Instant
, ZoneOffset
과 같은 클래스와 같은 복잡한 유형을 사용합니다. 이러한 필드의 속성은 필수 또는 선택사항일 수 있습니다. 일부 속성은 읽기 전용이며 일부 속성은 특정 값 범위로 제한됩니다.
사용 가능한 데이터 유형과 필드의 전체 목록은 Jetpack의 클래스를 참고하세요.
메타데이터 속성
헬스 커넥트 API의 데이터에는 다음 목록에 설명된 메타데이터 속성도 포함됩니다.
- 헬스 커넥트 ID: 생성 시 각 데이터 포인트에 고유 식별자(UID)가 할당됩니다. 이는 표준 읽기 및 쓰기 작업에 유용합니다. 자세한 내용은 헬스 커넥트 ID를 참고하세요.
- 최종 수정 시간: 기록이 업데이트된 마지막 인스턴스의 타임스탬프를 표시합니다. 기록이 처음 생성될 때 또는 업데이트가 발생할 때마다 자동으로 생성됩니다.
- 데이터 출처: 헬스 커넥트는 데이터의 출처인 앱에 관한 정보를 저장합니다. 여기에는 생성 시 자동으로 추가되는 해당 출처의 패키지 이름이 포함됩니다.
- 기기: 헬스 커넥트는 데이터가 발생한 기기에 관한 정보를 저장합니다. 개발자가 값을 수동으로 제공하는 해당 기기의 제조업체와 모델을 포함합니다.
- 클라이언트 ID: 헬스 커넥트는 클라이언트 앱이 자체 ID를 사용하여 데이터를 참조할 수 있도록 클라이언트 ID를 제공합니다. 이를 통해 충돌 문제를 해결하고 더 쉽게 동기화할 수 있습니다. 이는 기록에 수동으로 제공됩니다.
- 클라이언트 레코드 버전: 클라이언트 ID와 함께 헬스 커넥트는 데이터 동기화 중에 변경사항을 추적할 수 있도록 버전 관리를 제공합니다. 이는 기록에 수동으로 제공됩니다.
- 기록 방법: 헬스 커넥트를 사용하면 데이터가 기록되는 방식을 알 수 있습니다. 이러한 방법에는 앱이 수동적으로 (자동으로) 데이터를 기록하는 방법과 사용자가 능동적으로 또는 수동으로 데이터를 기록하는 방법이 포함됩니다.
헬스 커넥트 ID
헬스 커넥트는 새로 삽입된 데이터 객체에 고유 식별자 (UID)를 할당하여 데이터 객체를 식별하고 다른 데이터 객체와 구분합니다. 헬스 커넥트 ID는 읽기 또는 쓰기 요청에 유용합니다. 헬스 커넥트 ID는 클라이언트 ID와 다릅니다. 클라이언트 앱은 클라이언트 ID를 할당하지만 헬스 커넥트는 헬스 커넥트 ID만 할당합니다.
헬스 커넥트 ID를 사용할 때 다음 사항에 유의하세요.
- 세션에는 단일 헬스 커넥트 ID가 있지만, 세션 내의 데이터에는 자체 헬스 커넥트 ID가 있습니다.
- 헬스 커넥트 ID는 타임스탬프에 연결되거나 관련되지 않습니다.
- 일부 사용 사례에서는 워크플로 중에 특정 헬스 커넥트 ID를 저장해야 할 수도 있습니다. 예를 들어 사용자가 방금 기록한 데이터 항목을 가져와서 사용자에게 표시하려면 특정 ID가 필요합니다.
헬스 커넥트에서의 시간
헬스 커넥트에 기록되는 모든 데이터는 시간대 오프셋 정보를 지정해야 합니다. 시간대 오프셋을 지정하면 앱이 데이터를 읽어 상용 시간으로 표시할 수 있습니다. 상용 시간은 사용자의 현지 시간으로, 협정세계시 (UTC)가 아닐 수도 있습니다.
드물지만 시간대 오프셋을 사용할 수 없는 경우도 있습니다. Android 14 (API 수준 34)에서 이 문제가 발생하면 헬스 커넥트는 기기의 시스템 기본 시간대를 기반으로 시간대 오프셋을 설정합니다. Android 13 이하 버전(API 수준 33 이하)에서는 시간대 오프셋 정보를 지정하지 않고 헬스 커넥트에 쓸 수 있습니다. 이는 가능한 한 피해야 합니다.
시간 및 시간대 설정
데이터를 쓰는 동안 시간대 오프셋 정보를 지정하면 헬스 커넥트에서 데이터를 읽을 때 시간대 정보가 제공됩니다. 하지만 시간대 오프셋이 제공되지 않는 경우 등의 특정 상황에서는 정보가 제공되지 않을 수도 있습니다. 앱은 특정 상황에 맞는 방식으로 두 종류의 데이터를 모두 처리할 준비가 되어 있어야 합니다.