Android Fitness API не читает данные с носимых датчиков

Я читал об API Google Fit, особенно о API Sensors ( https://developers.google.com/fit/android/sensors), в котором говорится: API Sensors предоставляет доступ к необработанным потокам данных датчиков с датчиков, доступных на Android устройства и датчики, доступные в сопутствующих устройствах, таких как носимые.

Кроме того, просматривая пример видео Google, они говорят: "Это могут быть датчики, доступные на Android-устройстве, или датчики, доступные на сопутствующих устройствах. Например, для шагов, Fit будет использовать счетчик шагов на телефоне или на любом подключенном носителе, в зависимости от того, что он считает, что это Наиболее точный".

Прочитав это, я понимаю, что Fit API будет считывать данные с лучшего доступного датчика, но на их примере с подключенным носимым устройством у меня есть только один источник данных для чтения шагов: источник данных с моего телефона Android.

Я добавляю код:

Fitness.SensorsApi.findDataSources(mClient, new DataSourcesRequest.Builder()
                // At least one datatype must be specified.
                .setDataTypes(DataType.TYPE_STEP_COUNT_DELTA)
                // Can specify whether data type is raw or derived.
                .setDataSourceTypes(DataSource.TYPE_RAW)
                .build())
                .setResultCallback(new ResultCallback<DataSourcesResult>() {
                    @Override
                    public void onResult(DataSourcesResult dataSourcesResult) {
                        Log.i(TAG, "Result: " + dataSourcesResult.getStatus().toString());

                        for (DataSource dataSource : dataSourcesResult.getDataSources()) {
                            Log.i(TAG, "Data source found: " + dataSource.toString());
                            Log.i(TAG, "Data Source type: " + dataSource.getDataType().getName());

                            //Let's register a listener to receive Activity data!
                            if (dataSource.getDataType().equals(DataType.TYPE_STEP_COUNT_DELTA)
                                    && mListener == null) {
                                Log.i(TAG, "Data source for LOCATION_SAMPLE found!  Registering.");
                                registerFitnessDataListener(dataSource,
                                        DataType.TYPE_STEP_COUNT_DELTA);
                            }
                        }
                    }
                });

Здесь я получаю источник данных только с моего устройства Android, а не с моего телефона и моего носимого устройства (Moto 360 2gen.)

Ребята, у вас есть какие-то подсказки о том, почему я не получаю свой носимый источник данных в результате?

Благодарю.

1 ответ

Метод SensorsApi.findDataSources получает необработанные и производные датчики от устройства, на котором выполняется действие (в вашем случае это мобильное устройство). Если вы хотите использовать ваше носимое устройство в качестве источника данных, вам необходимо сначала подключиться к нему через Bluetooth. Попробуйте использовать API-интерфейс сканирования Bluetooth! Надеюсь это поможет.

Другие вопросы по тегам