2015-12-31 4 views
5

Ich kann mich mit Google Fit verbinden und Gewichtsdaten lesen, aber nicht alle Daten, die ich in Google Fit Web sehen kann. Ich glaube, dass etwas mit Datenquellen nicht stimmt, aber ich bin mir nicht sicher. Der Code für das Lesen ist:Lesen von Gewicht mit Google Fit

Instant endTime = Instant.now(); 
Instant startTime = DateTime.now().minusYears(10).toInstant(); 

DataReadRequest readRequest = new DataReadRequest.Builder() 
     .setTimeRange (startTime.getMillis(), endTime.getMillis(), TimeUnit.MILLISECONDS) 
     .read (DataType.TYPE_WEIGHT) 
     .build(); 

DataReadResult dataReadResult = Fitness.HistoryApi.readData(MyApp.mClient, readRequest).await (1, TimeUnit.MINUTES); 

Antwort

1

https://developers.google.com/fit/rest/v1/authorization#OAuth2Authorizing

DataType.TYPE_WEIGHT müssen von einem authentifizierten Scopes.FITNESS_BODY_READ

mClient = new GoogleApiClient.Builder(this) 
      .addApi(Fitness.HISTORY_API) 
      .addScope(new Scope(Scopes.FITNESS_ACTIVITY_READ_WRITE)) 
      .addScope(new Scope(Scopes.FITNESS_BODY_READ)) 
      .addScope(new Scope(Scopes.FITNESS_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? 
          // Look at some data!! 
          new InsertAndVerifyDataTask().execute(); 
         } 

         @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(); 
zugelassen werden