Это руководство совместимо с Health Connect версии 1.1.0-alpha12 .
Для разработчиков, решивших перейти на версию 1.1.0-alpha12, в Health Connect внесены изменения в метаданные.
Информация о библиотеке
Идентификатор артефакта плагина Google Maven для Android Gradle определяет библиотеку Health Connect, до которой необходимо выполнить обновление. Добавьте эту зависимость Health Connect SDK в файл build.gradle
на уровне модуля:
dependencies {
implementation "androidx.health.connect:connect-client:1.1.0-alpha12"
}
Изменения метаданных
Начиная с версии 1.1.0-alpha12 в Health Connect Jetpack SDK были внесены два изменения метаданных, чтобы обеспечить наличие дополнительных полезных метаданных в экосистеме.
При каждом создании экземпляра объекта типа Record()
необходимо указывать метаданные.
При записи данных в Health Connect необходимо указать один из четырех методов записи:
Метод записи | Описание |
---|---|
RECORDING_METHOD_UNKNOWN | Метод записи не может быть проверен. |
RECORDING_METHOD_MANUAL_ENTRY | Пользователь ввел данные. |
RECORDING_METHOD_AUTOMATICALLY_RECORDED | Устройство или датчик записали данные. |
RECORDING_METHOD_ACTIVELY_RECORDED | Пользователь инициировал начало или завершение сеанса записи на устройстве. |
Например:
StepsRecord(
startTime \= Instant.ofEpochMilli(1234L),
startZoneOffset \= null,
endTime \= Instant.ofEpochMilli(1236L),
endZoneOffset \= null,
metadata \= Metadata.manualEntry(),
Count \= 10,
)
Вам необходимо указать тип устройства для всех автоматически и активно записываемых данных. Текущие типы устройств включают:
Тип устройства | Описание |
---|---|
TYPE_UNKNOWN | Тип устройства неизвестен. |
TYPE_WATCH | Тип устройства — часы. |
TYPE_PHONE | Тип устройства — телефон. |
TYPE_SCALE | Тип устройства — весы. |
TYPE_RING | Тип устройства — кольцо. |
TYPE_HEAD_MOUNTED | Тип устройства — головное устройство. |
TYPE_FITNESS_BAND | Тип устройства — фитнес-браслет. |
TYPE_CHEST_STRAP | Тип устройства — нагрудный ремень. |
TYPE_SMART_DISPLAY | Тип устройства — смарт-дисплей. |
По возможности укажите производителя и модель устройства, а также его тип. Например:
private val TEST_DEVICE = Device(
manufacturer = "Google",
model = "Pixel Watch",
type = Device.TYPE_WATCH
)
Фрагменты обновлены
Руководства Health Connect были обновлены везде, где требуются новые фрагменты для соответствия новым требованиям к метаданным. Примеры см. на странице «Запись данных» .
Новые методы метаданных
Метаданные больше нельзя создавать напрямую, поэтому используйте один из фабричных методов для получения нового экземпляра метаданных. Каждая функция имеет три варианта сигнатуры:
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
-
Более подробную информацию можно найти на странице Android Open Source Project .
Тестовые данные
Используйте тестовую библиотеку для имитации ожидаемых значений метаданных:
private val TEST_METADATA =
Metadata.unknownRecordingMethod(
clientRecordId = "clientId",
clientRecordVersion = 1L,
device = Device(type = Device.TYPE_UNKNOWN),
).populatedWithTestValues(id = "test")
Это имитирует поведение реализации Health Connect, которая автоматически заполняет эти значения во время вставки записи.
Для библиотеки тестирования вам необходимо добавить эту зависимость Health Connect SDK в файл build.gradle
на уровне модуля:
dependencies {
testImplementation "androidx.health.connect:connect-testing:1.0.0-alpha02"
}
Обновить библиотеку
Основные шаги, которые вам необходимо выполнить:
Обновите вашу библиотеку до версии 1.1.0-alpha12.
При сборке библиотеки будут возникать ошибки компиляции, когда требуются новые метаданные, поэтому обязательно вносите необходимые изменения в метаданные при каждом создании экземпляра объекта типа
Record()
. Это должно завершить миграцию.