Получение данных сегмента активности в режиме реального времени - Google Fit Android - PullRequest
0 голосов
/ 22 января 2020

Я успешно получал данные об активности в режиме реального времени каждые 20 секунд, используя TYPE_ACTIVITY_SAMPLE, который с тех пор считается устаревшим. Альтернативой, на которую указывают документы, является TYPE_ACTIVITY_SEGMENT: действие, выполняемое в данный период времени. Я успешно подписался на TYPE_ACTIVITY_SEGMENT с FitnessOptions.ACCESS_WRITE.

. Я пытался найти источники данных, используя SensorsClient, как я делал с примером активности, например:

Fitness.getSensorsClient(this, account)
            .findDataSources(
                    new DataSourcesRequest.Builder()
                            .setDataTypes(DataType.TYPE_ACTIVITY_SEGMENT)
                            .setDataSourceTypes(DataSource.TYPE_DERIVED)
                            .build())

onSuccessListener is добавлено (actListener - переменная publi c):

.addOnSuccessListener(
    new OnSuccessListener<List<DataSource>>() {
        @Override
        public void onSuccess(List<DataSource> dataSources) {
            for (DataSource dataSource : dataSources) {
                Log.i(TAG, "Act Data source found: " + dataSource.toString());
                Log.i(TAG, "Act Data Source type: " + dataSource.getDataType().getName());

                 // Register listener for receiving activity segment:
                 if (dataSource.getDataType().equals(DataType.TYPE_ACTIVITY_SEGMENT)
                                        && actListener == null) {
                     Log.i(TAG, "Data source for ACTIVITY_SEGMENT found!  Registering.");
                     // Register data listener for activity segment:
                     registerActDataListener(dataSource, DataType.TYPE_ACTIVITY_SEGMENT);
                 }
            }

            // If no data sources have been found:
            if (actListener == null) {
                Log.i(TAG, "No data sources found for TYPE_ACTIVITY_SEGMENT");
            }

Список объектов DataSource пуст, когда я отлаживаю его, поэтому источники данных для этого конкретного запроса источника данных не найдены.

Это то, что я должен делать по этому поводу, или я должен использовать History API для извлечения сегментов из хранилища Fit? Это кажется неэффективным, поскольку я хочу находить активность каждые 20 секунд, как указано, и для этого потребуется часто делать запросы в хранилище Fit с использованием мобильных данных / Wi-Fi.

Сегмент активности звучит больше как агрегированный тип данных, чем пример активности, но docs указывает, что это мгновенное чтение.

Возможно, я ошибаюсь и просто пытаюсь модифицировать код, который работал для примера активности, но я не конечно; любая помощь приветствуется.

Примечание: Мне нужна только текущая активность, чтобы определить поведение приложения, мне не нужно записывать пользовательский сеанс в хранилище Fit, если только необходимо прочитать текущее действие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...