2016-05-18 2 views
0

Я пытаюсь получить количество шагов от google в приложении для Android. После того, как вы выбрали учетную запись google, приложение успешно вызывается до onConnected(). Я сконфигурировал Google API Console с правильным шрифтом SHA1 и именем пакета. Таким образом, с Console не может быть никаких проблем.Google Fit не дает количество шагов

Однако он никогда не попадает в onDataPoint() [это использовалось для работы до].

Я вставляю код после onConnected здесь.

DataSourcesRequest dataSourceRequest = new DataSourcesRequest.Builder() 
     .setDataTypes(DataType.TYPE_STEP_COUNT_CUMULATIVE) 
     .setDataSourceTypes(DataSource.TYPE_RAW) 
     .build(); 

ResultCallback<DataSourcesResult> dataSourcesResultCallback = new ResultCallback<DataSourcesResult>() { 
    @Override 
    public void onResult(DataSourcesResult dataSourcesResult) { 
     for (DataSource dataSource : dataSourcesResult.getDataSources()) { 
      if (DataType.TYPE_STEP_COUNT_CUMULATIVE.equals(dataSource.getDataType())) { 

       registerFitnessDataListener(dataSource, DataType.TYPE_STEP_COUNT_CUMULATIVE); 

      } 
     } 
    } 
}; 

Fitness.SensorsApi.findDataSources(mApiClient, dataSourceRequest) 
     .setResultCallback(dataSourcesResultCallback); 

, а затем

private void registerFitnessDataListener(DataSource dataSource, DataType dataType) { 
Log.e("GoogleFit", "registerFitnessDataListener"); 
SensorRequest request = new SensorRequest.Builder() 
    .setDataSource(dataSource) 
    .setDataType(dataType) 
    .setSamplingRate(3, TimeUnit.SECONDS) 
    .build(); 


Fitness.SensorsApi.add(mApiClient, request, this) 
    .setResultCallback(new ResultCallback<Status>() { 
     @Override 
     public void onResult(Status status) { 
      if (status.isSuccess()) { 
       Log.e("GoogleFit", "SensorApi successfully added"); 
      } 
     } 
    }); 
} 

Может кто-то помочь мне с причиной, почему он не получает удар в onDataPoint() метод ??

+0

Установлено, что мои данныеSourcesResultCallback возвращаются с DataSourceResult {status = Status {statusCode = SUCCESS, resolution = null}, data Sets = []}. Но он никогда не переходит в for (DataSource dataSource: dataSourcesResult.getDataSources()) {} для цикла – Dchaser88

+0

Вы пытались помещать журналы в свой 'onResult (DataSourcesResult dataSourcesResult)'? Смотрите, действительно ли он туда попал? Или проверьте количество 'dataSourcesResult.getDataSources()'? –

+1

привет, спасибо за ответ. Я решил это, используя DataSource.TYPE_DERIVED при построении DataSourcesRequest. – Dchaser88

ответ

0

Я решил его с помощью DataSource.TYPE_DERIVED при создании DataSourcesRequest. Я думаю, что это происходит в результате моего тестового устройства, которое Nexus 7 имеет программный датчик, а не аппаратный датчик. В результате я не могу получить результаты для TYPE_STEP_COUNT_DELTA.

+0

Прохладный .. Это может также помочь некоторым http://www.gadgetsaint.com/android/update-calories-steps-google-fit-api/#.WPFGK1N97BI – ASP

Смежные вопросы