Ten przewodnik jest zgodny z Health Connect w wersji 1.1.0-alpha12 i nowszej.
W przypadku deweloperów, którzy uaktualnią aplikację do wersji 1.1.0-alpha12 lub nowszej, w Health Connect nastąpią zmiany w metadanych.
Informacje o bibliotece
Identyfikator artefaktu wtyczki Google Maven Android Gradle
określa bibliotekę Health Connect, którą musisz zaktualizować.
Dodaj tę zależność pakietu SDK Health Connect do pliku build.gradle
na poziomie modułu:
dependencies {
implementation "androidx.health.connect:connect-client:1.1.0-alpha12"
}
Zmiany metadanych
W pakiecie SDK Health Connect Jetpack w wersji 1.1.0-alpha12 wprowadziliśmy 2 zmiany metadanych, aby ułatwić weryfikację, czy w ekosystemie istnieją dodatkowe przydatne metadane.
Określanie metody nagrywania
Szczegóły metadanych musisz podać za każdym razem, gdy tworzony jest obiekt typu Record()
.
Podczas zapisywania danych w Health Connect musisz określić jedną z 4 metod rejestrowania, używając jednej z odpowiednich metod fabrycznych
do utworzenia instancji Metadata
:
Metoda nagrywania | Opis |
---|---|
RECORDING_METHOD_UNKNOWN |
Nie można zweryfikować metody nagrywania. |
RECORDING_METHOD_MANUAL_ENTRY |
Użytkownik wprowadził dane. |
RECORDING_METHOD_AUTOMATICALLY_RECORDED |
Dane zostały zarejestrowane przez urządzenie lub czujnik. |
RECORDING_METHOD_ACTIVELY_RECORDED |
Użytkownik zainicjował rozpoczęcie lub zakończenie sesji nagrywania na urządzeniu. |
Na przykład:
StepsRecord(
startTime = Instant.ofEpochMilli(1234L),
startZoneOffset = null,
endTime = Instant.ofEpochMilli(1236L),
endZoneOffset = null,
metadata = Metadata.manualEntry(),
Count = 10,
)
Typ urządzenia
Musisz określić typ urządzenia w przypadku wszystkich danych rejestrowanych automatycznie i aktywnie. Możesz też określić wartości manufacturer
i model
, ale nie jest to wymagane. Więcej informacji znajdziesz w dokumentacji Jetpack na temat klasy Device
. Obecnie dostępne typy urządzeń to:
Typ urządzenia | Opis |
---|---|
TYPE_UNKNOWN |
Typ urządzenia jest nieznany. |
TYPE_WATCH |
Typ urządzenia to zegarek. |
TYPE_PHONE |
Typ urządzenia to telefon. |
TYPE_SCALE |
Typ urządzenia to waga. |
TYPE_RING |
Typem urządzenia jest pierścień. |
TYPE_HEAD_MOUNTED |
Typ urządzenia to urządzenie montowane na głowie. |
TYPE_FITNESS_BAND |
Typ urządzenia to tracker fitness. |
TYPE_CHEST_STRAP |
Typ urządzenia to pas na klatkę piersiową. |
TYPE_SMART_DISPLAY |
Typ urządzenia to inteligentny ekran. |
Niektóre wartości Device.type
są dostępne tylko w nowszych wersjach Health Connect. Gdy funkcja rozszerzonych typów urządzeń jest niedostępna, te typy są traktowane jako Device.TYPE_UNKNOWN
.
Rozszerzone typy urządzeń | Opis |
---|---|
TYPE_CONSUMER_MEDICAL_DEVICE |
Typ urządzenia to urządzenie medyczne. |
TYPE_GLASSES |
Typ urządzenia to para inteligentnych okularów. |
TYPE_HEARABLE |
Typ urządzenia to urządzenie słuchowe. |
TYPE_FITNESS_MACHINE |
Typ urządzenia to maszyna stacjonarna. |
TYPE_FITNESS_EQUIPMENT |
Typ urządzenia to sprzęt do ćwiczeń. |
TYPE_PORTABLE_COMPUTER |
Typ urządzenia to komputer przenośny. |
TYPE_METER |
Typ urządzenia to miernik. |
FEATURE_EXTENDED_DEVICE_TYPES
w aplikacji:
if (healthConnectClient
.features
.getFeatureStatus(
HealthConnectFeatures.FEATURE_EXTENDED_DEVICE_TYPES
) == HealthConnectFeatures.FEATURE_STATUS_AVAILABLE) {
// Feature is available
} else {
// Feature isn't available
}
Jeśli to możliwe, podaj producenta i model urządzenia oraz jego typ. Na przykład:
private val TEST_DEVICE = Device(
manufacturer = "Google",
model = "Pixel Watch",
type = Device.TYPE_WATCH
)
Zaktualizowano fragmenty
W przewodnikach po Health Connect wprowadziliśmy aktualizacje, dodając nowe fragmenty kodu, które są potrzebne do spełnienia nowych wymagań dotyczących metadanych. Przykłady znajdziesz na stronie Zapisywanie danych.
Nowe metody metadanych
Metadanych nie można już tworzyć bezpośrednio, więc użyj jednej z metod fabrykujących, aby uzyskać nową instancję metadanych. Metody fabryczne weryfikują, czy informacje o urządzeniu są podawane, gdy urządzenie lub czujnik zostały użyte do zarejestrowania danych. W przypadku danych wprowadzanych ręcznie podawanie informacji o urządzeniu pozostaje opcjonalne. Każda funkcja ma 3 warianty sygnatury:
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
Więcej informacji znajdziesz w projekcie Android Open Source.
Dane testowe
Użyj biblioteki testowej i MetadataTestHelper
, aby zasymulować oczekiwane wartości metadanych:
private val TEST_METADATA =
Metadata.unknownRecordingMethod(
clientRecordId = "clientId",
clientRecordVersion = 1L,
device = Device(type = Device.TYPE_UNKNOWN),
).populatedWithTestValues(id = "test")
Symuluje to działanie implementacji Health Connect, która automatycznie wypełnia te wartości podczas wstawiania rekordu.
W przypadku biblioteki testowej musisz dodać tę zależność pakietu SDK Health Connect do pliku build.gradle
na poziomie modułu:
dependencies {
testImplementation "androidx.health.connect:connect-testing:1.0.0-alpha02"
}
Uaktualnianie biblioteki
Główne czynności, które musisz wykonać:
Zaktualizuj bibliotekę do wersji 1.1.0-alpha12.
Podczas tworzenia biblioteki będą zgłaszane błędy kompilacji w miejscach, w których potrzebne są nowe metadane. Aby rozwiązać te błędy i dokonać migracji, wprowadź te zmiany:
- Podczas tworzenia elementu
Record
musisz określić metodę nagrywania. Można to zrobić za pomocą jednej z metod fabrycznych podanych wMetadata
, np.Metadata.manualEntry()
lubMetadata.activelyRecorded(device = Device(...))
. - W przypadku danych zarejestrowanych przez urządzenie należy podać jego typ, np.
Device.TYPE_WATCH
lubDevice.TYPE_PHONE
.
- Podczas tworzenia elementu
Jeśli aplikacja zapisuje rozszerzone typy urządzeń, umieść je za
FEATURE_EXTENTED_DEVICE_TYPES
, aby uniknąć nieoczekiwanegoTYPE_UNKNOWN
na urządzeniach, na których ta funkcja nie jest dostępna.