Я успешно получал данные об активности в режиме реального времени каждые 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, если только необходимо прочитать текущее действие.