Diese Anleitung ist mit Health Connect-Version 1.1.0-alpha12 und höher kompatibel.
Für Entwickler, die auf Version 1.1.0-alpha12 oder höher upgraden, gibt es Änderungen an den Metadaten in Health Connect.
Bibliotheksinformationen
Die Artefakt-ID des Google Maven Android-Gradle-Plug-ins gibt die Health Connect-Bibliothek an, auf die Sie aktualisieren müssen.
Fügen Sie diese Health Connect SDK-Abhängigkeit der Datei build.gradle
auf Modulebene hinzu:
dependencies {
implementation "androidx.health.connect:connect-client:1.1.0-alpha12"
}
Änderungen an Metadaten
In Version 1.1.0-alpha12 des Health Connect Jetpack SDK wurden zwei Änderungen an den Metadaten eingeführt, um zu prüfen, ob zusätzliche nützliche Metadaten im Ökosystem vorhanden sind.
Aufnahmemethode angeben
Sie müssen Metadatendetails angeben, wenn ein Objekt vom Typ Record()
instanziiert wird.
Wenn Sie Daten in Health Connect schreiben, müssen Sie eine von vier Aufzeichnungsmethoden angeben. Verwenden Sie dazu eine der entsprechenden Factory-Methoden, um Metadata
zu instanziieren:
Aufzeichnungsmethode | Beschreibung |
---|---|
RECORDING_METHOD_UNKNOWN |
Die Aufzeichnungsmethode kann nicht überprüft werden. |
RECORDING_METHOD_MANUAL_ENTRY |
Der Nutzer hat die Daten eingegeben. |
RECORDING_METHOD_AUTOMATICALLY_RECORDED |
Die Daten wurden von einem Gerät oder Sensor aufgezeichnet. |
RECORDING_METHOD_ACTIVELY_RECORDED |
Der Nutzer hat auf einem Gerät den Start oder das Ende der Aufzeichnungssitzung initiiert. |
Beispiel:
StepsRecord(
startTime = Instant.ofEpochMilli(1234L),
startZoneOffset = null,
endTime = Instant.ofEpochMilli(1236L),
endZoneOffset = null,
metadata = Metadata.manualEntry(),
Count = 10,
)
Gerätetyp
Sie müssen für alle automatisch und aktiv aufgezeichneten Daten einen Gerätetyp angeben. manufacturer
und model
können ebenfalls angegeben werden, sind aber optional. Weitere Informationen finden Sie in der Device
-Klasse in der Jetpack-Dokumentation. Derzeit sind folgende Gerätetypen verfügbar:
Gerätetyp | Beschreibung |
---|---|
TYPE_UNKNOWN |
Der Gerätetyp ist unbekannt. |
TYPE_WATCH |
Der Gerätetyp ist eine Smartwatch. |
TYPE_PHONE |
Der Gerätetyp ist ein Smartphone. |
TYPE_SCALE |
Der Gerätetyp ist eine Waage. |
TYPE_RING |
Der Gerätetyp ist ein Ring. |
TYPE_HEAD_MOUNTED |
Der Gerätetyp ist ein am Kopf getragenes Gerät. |
TYPE_FITNESS_BAND |
Der Gerätetyp ist ein Fitness-Tracker. |
TYPE_CHEST_STRAP |
Der Gerätetyp ist ein Brustgurt. |
TYPE_SMART_DISPLAY |
Der Gerätetyp ist ein Smart Display. |
Einige Device.type
-Werte sind nur in neueren Versionen von Health Connect verfügbar. Wenn die Funktion für erweiterte Gerätetypen nicht verfügbar ist, werden diese Typen als Device.TYPE_UNKNOWN
behandelt.
Erweiterte Gerätetypen | Beschreibung |
---|---|
TYPE_CONSUMER_MEDICAL_DEVICE |
Der Gerätetyp ist „Medizinprodukt“. |
TYPE_GLASSES |
Der Gerätetyp ist eine Smartbrille. |
TYPE_HEARABLE |
Der Gerätetyp ist ein Hearable. |
TYPE_FITNESS_MACHINE |
Der Gerätetyp ist eine stationäre Maschine. |
TYPE_FITNESS_EQUIPMENT |
Der Gerätetyp ist ein Fitnessgerät. |
TYPE_PORTABLE_COMPUTER |
Der Gerätetyp ist ein tragbarer Computer. |
TYPE_METER |
Der Gerätetyp ist ein Messgerät. |
FEATURE_EXTENDED_DEVICE_TYPES
if (healthConnectClient
.features
.getFeatureStatus(
HealthConnectFeatures.FEATURE_EXTENDED_DEVICE_TYPES
) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {
// Feature is available
} else {
// Feature isn't available
}
Geben Sie nach Möglichkeit zusätzlich zum Gerätetyp den Hersteller und das Modell des Geräts an. Beispiel:
private val TEST_DEVICE = Device(
manufacturer = "Google",
model = "Pixel Watch",
type = Device.TYPE_WATCH
)
Snippets aktualisiert
Health Connect-Anleitungen wurden überall dort aktualisiert, wo neue Snippets erforderlich sind, um die neuen Metadatenanforderungen zu erfüllen. Einige Beispiele finden Sie auf der Seite Daten schreiben.
Neue Metadaten-Methoden
Metadaten können nicht mehr direkt instanziiert werden. Verwenden Sie daher eine der Factory-Methoden, um eine neue Instanz von Metadaten zu erhalten. Die Factory-Methoden prüfen, ob Geräteinformationen angegeben werden, wenn ein Gerät oder Sensor zum Aufzeichnen der Daten verwendet wurde. Bei manuell eingegebenen Daten ist die Angabe von Geräteinformationen weiterhin optional. Jede Funktion hat drei Signaturvarianten:
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
Weitere Informationen finden Sie im Android Open Source Project.
Testdaten
Verwenden Sie die Testing Library und MetadataTestHelper
, um erwartete Metadatenwerte zu simulieren:
private val TEST_METADATA =
Metadata.unknownRecordingMethod(
clientRecordId = "clientId",
clientRecordVersion = 1L,
device = Device(type = Device.TYPE_UNKNOWN),
).populatedWithTestValues(id = "test")
Dadurch wird das Verhalten der Health Connect-Implementierung simuliert, bei der diese Werte automatisch beim Einfügen von Datensätzen eingefügt werden.
Für die Testbibliothek müssen Sie diese Health Connect SDK-Abhängigkeit in die Datei build.gradle
auf Modulebene einfügen:
dependencies {
testImplementation "androidx.health.connect:connect-testing:1.0.0-alpha02"
}
Bibliothek aktualisieren
Die wichtigsten Schritte sind:
Aktualisieren Sie Ihre Bibliothek auf 1.1.0-alpha12.
Beim Erstellen der Bibliothek werden Kompilierungsfehler ausgegeben, wenn neue Metadaten erforderlich sind. So beheben Sie diese Fehler und schließen die Migration ab:
- Beim Erstellen eines
Record
ist es obligatorisch, eine Aufzeichnungsmethode anzugeben. Dazu wird eine der inMetadata
bereitgestellten Factory-Methoden wieMetadata.manualEntry()
oderMetadata.activelyRecorded(device = Device(...))
verwendet. - Für Daten, die von einem Gerät aufgezeichnet werden, muss ein Gerätetyp angegeben werden, z. B.
Device.TYPE_WATCH
oderDevice.TYPE_PHONE
.
- Beim Erstellen eines
Wenn Ihre App erweiterte Gerätetypen schreibt, müssen Sie sie hinter
FEATURE_EXTENTED_DEVICE_TYPES
einfügen, um unerwarteteTYPE_UNKNOWN
auf Geräten zu vermeiden, auf denen die Funktion nicht verfügbar ist.