Meta veri gereksinimleri

Bu kılavuz, Health Connect'in 1.2.0-alpha05 ve sonraki sürümleriyle uyumludur.

1.1.0-alpha12 veya sonraki sürümlere yükselten geliştiriciler için Health Connect'teki meta verilerde değişiklikler yapıldı.

Kütüphane bilgileri

Google Maven Android Gradle eklentisi yapay nesne kimliği, yükseltmeniz gereken Health Connect kitaplığını tanımlar. Bu Health Connect SDK bağımlılığını modül düzeyindeki build.gradle dosyanıza ekleyin:

dependencies {
  implementation "androidx.health.connect:connect-client:1.1.0-alpha12"
}

Meta veri değişiklikleri

Ekosistemde ek yararlı meta verilerin bulunduğunu doğrulamaya yardımcı olmak için Health Connect Jetpack SDK'sında 1.1.0-alpha12 sürümünden itibaren iki meta veri değişikliği yapıldı. metadata, Record oluşturucunuza dahil edilmemişse Constructor internal hatası görebilirsiniz.

Kayıt yöntemini belirtme

Record() türü nesnesi her oluşturulduğunda meta veri ayrıntılarını belirtmeniz gerekir.

Health Connect'e veri yazarken Metadata öğesini oluşturmak için ilgili fabrika yöntemlerinden birini kullanarak dört kayıt yönteminden birini belirtmeniz gerekir:

Kayıt yöntemi Açıklama
RECORDING_METHOD_UNKNOWN Kayıt yöntemi doğrulanamıyor.
RECORDING_METHOD_MANUAL_ENTRY Kullanıcı verileri girmiştir.
RECORDING_METHOD_AUTOMATICALLY_RECORDED Veriler bir cihaz veya sensör tarafından kaydedilmiştir.
RECORDING_METHOD_ACTIVELY_RECORDED Kullanıcı, bir cihazda kayıt oturumunun başlatılmasını veya sonlandırılmasını sağladı.

Örneğin:

 StepsRecord(
    startTime = Instant.ofEpochMilli(1234L),
    startZoneOffset = null,
    endTime = Instant.ofEpochMilli(1236L),
    endZoneOffset = null,
    metadata = Metadata.activelyRecorded(device = Device(type = Device.TYPE_WATCH)),
    count = 10
)

Cihaz türü

Otomatik olarak ve etkin bir şekilde kaydedilen tüm veriler için bir cihaz türü belirtmeniz gerekir. Daha fazla bilgi için Device sınıfıyla ilgili Jetpack belgelerine bakın. Şu anda desteklenen cihaz türleri:

Cihaz türü Açıklama
TYPE_UNKNOWN Cihaz türü bilinmiyor.
TYPE_WATCH Cihaz türü kol saati olmalıdır.
TYPE_PHONE Cihazın türü telefon.
TYPE_SCALE Cihaz türü tartıdır.
TYPE_RING Cihaz türü yüzük olmalıdır.
TYPE_HEAD_MOUNTED Cihaz türü, başa takılan bir cihazdır.
TYPE_FITNESS_BAND Cihaz türü fitness bandı olmalıdır.
TYPE_CHEST_STRAP Cihaz türü göğüs bandı olmalıdır.
TYPE_SMART_DISPLAY Cihaz türü akıllı ekran olmalıdır.

Bazı Device.type değerleri yalnızca Health Connect'in sonraki sürümlerinde kullanılabilir. Genişletilmiş cihaz türleri özelliği kullanılamadığında bu türler Device.TYPE_UNKNOWN olarak kabul edilir.

Genişletilmiş cihaz türleri Açıklama
TYPE_CONSUMER_MEDICAL_DEVICE Cihaz türü tıbbi cihazdır.
TYPE_GLASSES Cihaz türü, akıllı gözlük veya gözlük olmalıdır.
TYPE_HEARABLE Cihaz türü, işitme cihazı olmalıdır.
TYPE_FITNESS_MACHINE Cihaz türü sabit bir makine olmalıdır.
TYPE_FITNESS_EQUIPMENT Cihaz türü fitness ekipmanıdır.
TYPE_PORTABLE_COMPUTER Cihaz türü taşınabilir bilgisayardır.
TYPE_METER Cihaz türü ölçüm cihazı olmalıdır.
Kullanıcının cihazının Health Connect'te Genişletilmiş Cihaz Türlerini destekleyip desteklemediğini belirlemek için istemcide FEATURE_EXTENDED_DEVICE_TYPES kullanılabilirliğini kontrol edin:

if (healthConnectClient
     .features
     .getFeatureStatus(
       HealthConnectFeatures.FEATURE_EXTENDED_DEVICE_TYPES
     ) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {

  // Feature is available
} else {
  // Feature isn't available
}
Daha fazla bilgi edinmek için Özelliğin kullanılabilirliğini kontrol etme başlıklı makaleyi inceleyin.

Örneğin:

 val WATCH_DEVICE = Device(
    manufacturer = "Google",
    model = "Pixel Watch",
    type = Device.TYPE_WATCH
)

// Phone
 val PHONE_DEVICE = Device(
    manufacturer = "Google",
    model = "Pixel 8",
    type = Device.TYPE_PHONE
)

// Ring
 val RING_DEVICE = Device(
    manufacturer = "Oura",
    model = "Ring Gen3",
    type = Device.TYPE_RING
)

// Scale
 val SCALE_DEVICE = Device(
    manufacturer = "Withings",
    model = "Body Comp",
    type = Device.TYPE_SCALE
)

Benzersiz Cihaz Tanımlayıcısı (UDI)

Android 17 (API düzeyi 37.1) veya U uzantısı 23 ya da sonraki sürümlerdeki Health Connect için Device sınıfı, Unique Device Identifier (UDI) desteği içerir. Tıbbi cihazın kayıtlı UDI model ayrıntılarını yazılı kayıtlarınızla ilişkilendirmek, sonraki uygulamaların (ör. uzaktan sağlık hizmeti platformları veya klinik portalları) klinik düzeydeki ölçümleri tanımlamasına ve bunları genel tüketici giyilebilir cihaz verilerinden ayırt etmesine olanak tanır.

İzni tanımlama

UDI ayrıntılarını Health Connect'e yazmak için uygulamanızın AndroidManifest.xml dosyasında WRITE_DEVICE_UDI iznini beyan etmeniz gerekir:

<uses-permission android:name="android.permission.health.WRITE_DEVICE_UDI" />

WRITE_DEVICE_UDI'nın normal bir izin olduğunu unutmayın. Bunu manifest dosyanızda beyan etmeniz gerekir ancak çalışma zamanında kullanıcıdan istemeniz gerekmez. Bu izin, yükleme sırasında uygulamanıza otomatik olarak verilir.

Yalnızca Cihaz Tanımlayıcısı (DI) bölümünü yazın.

Tam bir UDI iki bölümden oluşur:

  • Cihaz Tanımlayıcısı (UDI-DI): Bir yetkili kurum (ör. GS1) tarafından belirli bir cihaz modeline atanan, dünya genelinde tanınan bir tanımlayıcıdır.
  • Üretim Tanımlayıcısı (UDI-PI): Birime özgü özellikler (ör. seri numaraları, parti numaraları, üretim tarihleri veya son kullanma tarihleri).

Kullanıcı gizliliğini korumak için Health Connect'teki kodun yalnızca UDI-DI bölümünü doldurun. Üretim tanımlayıcısı özelliklerini (ör. seri numaraları veya parti numaraları) eklemeyin.

Kod örneği

Not: Device örneği oluştururken UDI'yi ayarlayabilirsiniz.

Jetpack SDK'sı

val device = Device(
    type = Device.TYPE_CONSUMER_MEDICAL_DEVICE,
    manufacturer = "Omron",
    model = "HEM-7121",
    udi = "04015674011832" // Device Identifier (UDI-DI) portion only
)

Platform API

val device = Device.Builder()
    .setType(Device.DEVICE_TYPE_CONSUMER_MEDICAL_DEVICE)
    .setManufacturer("Omron")
    .setModel("HEM-7121")
    .setUdi("04015674011832") // Device Identifier (UDI-DI) portion only
    .build()

WRITE_DEVICE_UDI iznini beyan etmeden UDI ile veri yazarsanız Health Connect, yazma sırasında SecurityException hatası verir.

Cihazın gümrükten geçtiğini doğrulamak için UDI'yi kullanma

Health Connect, bir aktarım katmanı olarak işlev görür ve UDI'nin gerçekliğini veya kayıt durumunu doğrulamaz.

Veri okuyucular için UDI'nin varlığı, verilerin kayıtlı bir tıbbi cihazdan geldiğini gösterir. Okuma uygulamaları, cihaz sınıflandırmalarını, yasal izin durumunu (ör. Sınıf I, II veya III) ya da belirli kullanım amacını doğrulamak için FDA'nın Global Unique Device Identification Database (GUDID) veya AB'nin EUDAMED gibi düzenleyici veritabanlarını sorgulamalıdır.

Snippet'ler güncellendi

Yeni meta veri şartlarına uymak için yeni snippet'lerin gerektiği her yerde Health Connect kılavuzları güncellendi. Bazı örnekler için Veri Yazma sayfasına bakın.

Yeni meta veri yöntemleri

Meta veriler artık doğrudan oluşturulamaz. Bu nedenle, meta verilerin yeni bir örneğini almak için fabrika yöntemlerinden birini kullanın. Fabrika yöntemleri, verileri kaydetmek için bir cihaz veya sensör kullanıldığında cihaz bilgilerinin sağlandığını doğrular. Manuel olarak girilen veriler için cihaz bilgilerinin sağlanması isteğe bağlıdır. Her işlevin üç imza varyantı vardır:

  • activelyRecorded

    • fun activelyRecorded(device: Device): Metadata.
    • fun activelyRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadata
    • fun activelyRecordedWithId(id: String, device: Device): Metadata
  • autoRecorded

    • fun autoRecorded(device: Device): Metadata
    • fun autoRecorded(clientRecordId: String, clientRecordVersion: Long = 0, device: Device): Metadata
    • fun autoRecordedWithId(id: String, device: Device): Metadata
  • manualEntry

    • fun manualEntry(device: Device? = null): Metadata
    • fun manualEntry(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadata
    • fun manualEntryWithId(id: String, device: Device? = null): Metadata
  • unknownRecordingMethod

    • fun unknownRecordingMethod(device: Device? = null): Metadata
    • fun unknownRecordingMethod(clientRecordId: String, clientRecordVersion: Long = 0, device: Device? = null): Metadata
    • fun unknownRecordingMethodWithId(id: String, device: Device? = null): Metadata

Daha fazla bilgi için Android Açık Kaynak Projesi'ne bakın.

Test verileri

Beklenen meta veri değerlerini taklit etmek için Testing Library'yi ve MetadataTestHelper kullanın:

private val TEST_METADATA =
    Metadata.unknownRecordingMethod(
        clientRecordId = "clientId",
        clientRecordVersion = 1L,
        device = Device(type = Device.TYPE_UNKNOWN),
    ).populatedWithTestValues(id = "test")

Bu, Health Connect uygulamasının davranışını simüle eder. Health Connect uygulaması, kayıt ekleme sırasında bu değerleri otomatik olarak doldurur.

Test kitaplığı için bu Health Connect SDK bağımlılığını modül düzeyindeki build.gradle dosyanıza eklemeniz gerekir:

dependencies {
  testImplementation "androidx.health.connect:connect-testing:1.0.0-alpha02"
}

Kitaplığı yükseltme

Gerçekleştirmeniz gereken temel adımlar şunlardır:

  1. Kitaplığınızı 1.1.0-alpha12 sürümüne yükseltin.

  2. Kitaplık oluşturulurken yeni meta verilerin gerektiği yerlerde derleme hataları gösterilir. Bu hataları düzeltmek ve taşıma işlemini tamamlamak için aşağıdaki değişiklikleri yaptığınızı doğrulayın:

    • Record oluştururken kayıt yöntemi belirtmek zorunludur. Bu işlem, Metadata içinde sağlanan fabrika yöntemlerinden biri (ör. Metadata.manualEntry() veya Metadata.activelyRecorded(device = Device(...))) kullanılarak yapılır.
    • Bir cihaz tarafından kaydedilen veriler için Device.TYPE_WATCH veya Device.TYPE_PHONE gibi bir cihaz türü belirtmek zorunludur.
  3. Uygulamanız genişletilmiş cihaz türleri yazıyorsa özelliği kullanılamayan cihazlarda beklenmedik TYPE_UNKNOWN değerlerini önlemek için bu türleri FEATURE_EXTENTED_DEVICE_TYPES ile sınırlayın.