Могу ли я записывать данные о тренировках в GoogleFit из приложения WearOS?

#wear-os #google-fit

Вопрос:

Я создаю приложение для фитнес-одежды. Я хочу записывать тренировки, выполненные с помощью приложения, в GoogleFit.

Есть ли способ сделать это с помощью WearOS?

Я начинаю тренировку с помощью медицинских услуг:

 suspend fun startExercise() {
    val dataTypes = setOf(
        DataType.HEART_RATE_BPM,
        DataType.LOCATION

    )
    val aggregateDataTypes = setOf(
        DataType.DISTANCE,
        DataType.TOTAL_CALORIES
    )
    val config = ExerciseConfig.builder()
        .setExerciseType(ExerciseType.RUNNING)
        .setDataTypes(dataTypes)
        .setAggregateDataTypes(aggregateDataTypes)
        .setShouldEnableAutoPauseAndResume(false)
        .setShouldEnableGps(true)
        .build()
    HealthServices.getClient(this /*context*/)
        .exerciseClient
        .startExercise(config)
        .await()
}
 

(Код взят из этого примера https://developer.android.com/training/wearables/health-services/active#start)

Я ожидал, что если я начну/закончу тренировку с HealthServices помощью этого, данные автоматически волшебным образом синхронизируются с GoogleFit(Apple делает это с помощью HealthKit).

Итак, могу ли я записывать данные о тренировках в GoogleFit из приложения WearOS?

Комментарии:

1. Автоматического способа нет, в настоящее время вам необходимо прочитать данные, преобразовать их и записать в API Fit.

2. @YuriSchimke вы случайно не знаете, есть ли автоматический способ на дорожной карте Google/WearOS? Или любой другой канал, кроме StackOverflow, где задать такой вопрос? Я не нашел здесь, кого еще я могу спросить developers.google.com/fit/support

Ответ №1:

Чтобы добавить к комментарию Юрия, что это невозможно автоматически, SessionClient это, вероятно, то, что вы хотели бы сделать вручную. Поток был бы:

  1. Сбор данных с помощью служб здравоохранения
  2. Преобразовать
  3. Вставить сеанс с SessionClient

Фрагмент вставки сеанса в документах Google Fit является подходящим примером, поскольку он одновременно задает тип сеанса (в данном случае запущенный), а затем также добавляет базовые данные (вместо того, чтобы делать это отдельно HistoryClient ).