2016-01-29 3 views
2

Я новичок в Android Wearable и Google Fit. Я расследую как Google Fit Recording API работает путем создания простого Android приложения с помощью следующего кода в основном виде деятельности (они были взяты из примера Basic Recording API от Google):Не удается получить API совместимости Google Fit для работы

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     ... 
     buildFitnessClient(); 
    } 

    private void buildFitnessClient() { 
      // Create the Google API Client 
      mClient = new GoogleApiClient.Builder(this) 
      .addApi(Fitness.RECORDING_API) 
      .addScope(Fitness.SCOPE_LOCATION_READ_WRITE) 
      .addScope(Fitness.SCOPE_ACTIVITY_READ_WRITE) 
      .addScope(Fitness.SCOPE_BODY_READ_WRITE) 
      .addConnectionCallbacks(
        new GoogleApiClient.ConnectionCallbacks() { 

         @Override 
         public void onConnected(Bundle bundle) { 
          Log.i(TAG, "Connected!!!"); 
          // Now you can make calls to the Fitness APIs. What to do? 
          // Subscribe to some data sources! 
          subscribe(); 
         } 

         @Override 
         public void onConnectionSuspended(int i) { 
          // If your connection to the sensor gets lost at some point, 
          // you'll be able to determine the reason and react to it here. 
          if (i == ConnectionCallbacks.CAUSE_NETWORK_LOST) { 
           Log.i(TAG, "Connection lost. Cause: Network Lost."); 
          } else if (i == ConnectionCallbacks.CAUSE_SERVICE_DISCONNECTED) { 
           Log.i(TAG, "Connection lost. Reason: Service Disconnected"); 
          } 
         } 
        } 
      ) 
      .enableAutoManage(this, 0, new GoogleApiClient.OnConnectionFailedListener() { 
       @Override 
       public void onConnectionFailed(ConnectionResult result) { 
        Log.i(TAG, "Google Play services connection failed. Cause: " + 
          result.toString()); 
        Snackbar.make(
          MainActivity.this.findViewById(R.id.main_activity_view), 
          "Exception while connecting to Google Play services: " + 
            result.getErrorMessage(), 
          Snackbar.LENGTH_INDEFINITE).show(); 
       } 
      }) 
      .build(); 
} 

/** 
* Subscribe to an available {@link DataType}. Subscriptions can exist across application 
* instances (so data is recorded even after the application closes down). When creating 
* a new subscription, it may already exist from a previous invocation of this app. If 
* the subscription already exists, the method is a no-op. However, you can check this with 
* a special success code. 
*/ 
public void subscribe() { 
    // To create a subscription, invoke the Recording API. As soon as the subscription is 
    // active, fitness data will start recording. 
    // [START subscribe_to_datatype] 
    Fitness.RecordingApi.subscribe(mClient, DataType.TYPE_STEP_COUNT_DELTA) 
             .setResultCallback(new ResultCallback<Status>() { 
       @Override 
       public void onResult(Status status) { 
        if (status.isSuccess()) { 
         if (status.getStatusCode() 
           == FitnessStatusCodes.SUCCESS_ALREADY_SUBSCRIBED) { 
          Log.i(TAG, "Existing subscription for activity detected."); 
         } else { 
          Log.i(TAG, "Successfully subscribed!"); 
         } 
        } else { 
         Log.i(TAG, "There was a problem subscribing: " + status.getStatusMessage()); 
        } 
       } 
    }); 
    // [END subscribe_to_datatype] 
} 

Я не был уверен, как запись API. Согласно документации Google Fit, API автоматически позаботится о отслеживании шагов (в данном случае) и сохранит количество шагов в фитнес-магазине. Так что я ожидал, что приложение будет работать, это запуск приложения, ходьба на какое-то время, и при проверке моей учетной записи Google Fit количество шагов должно быть увеличено.

Однако этого не произошло.

Не могли бы вы исправить меня, если мое понимание было неправильным, или если это так, пожалуйста, укажите мне правильное направление, чтобы заставить этот код работать.

Приветствия

Обновление: После более чем за час, мои данные Google Fit показали, что число шагов увеличилось с 3033 (ранее порожденного Fit приложения, который затем был удален, чтобы надежно тестирование этого приложения) до 5011. Возрастающее количество очень сбивает с толку, потому что я моделировал шаги, встряхивая свой телефон, и, конечно же, я не был так 2000 раз! Я использовал API-интерфейс датчика, чтобы отображать количество шагов в реальном времени, и общее число этих номеров было ниже 200.

Кроме того, я вручную проверял данные каждые 10-20 минут, и я уверен, что потребовалось больше, чем 1 час для получения данных. Согласно документации Google Fit, хранение данных (в фитнес-магазине) производится автоматически «с эффективностью батареи». Однако он не говорит о том, как это делается, т. Е. Как часто.

Было бы здорово, если бы кто-то помог мне с этими вопросами. Любая помощь ценится!

ответ

0

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

например. Примером значений для вероятного обнаружения ходьбы может быть:

walking -> 20.0 
in_vehicle -> 10.0 
biking -> 66.6