2015-12-31 11 views
5

Mogę połączyć się z Google Fit i odczytać dane o wadze, ale nie wszystkie dane, które widzę w Google Fit Web. Wierzę, że coś jest nie tak ze źródłami danych, ale nie jestem pewien. Kod do czytania jest:Czytanie wagi przy użyciu 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); 

Odpowiedz

1

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

DataType.TYPE_WEIGHT musi być autoryzowane przez uwierzytelniony 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();