2017-01-26 2 views
0

Ich habe ein Problem mit google fit Daten auf Android Wear 2.0. Meine Anfragen erhalten eine TIMEOUT-Antwort. Wenn die Methode "award()" keine Parameter enthält, gibt es keine Antwort (die Methode "award()" wurde nicht zurückgegeben). Irgendwelche Hinweise was ist falsch?Anfrage Timeout in Google Fit - Android wear 2.0

App verwendet Google Sign-In, und alles funktioniert auf regulären Android-Gerät.

Erstellen von GoogleApiClient und SignInAccount

GoogleSignInOptions signInConfig = new GoogleSignInOptions 
       .Builder(GoogleSignInOptions.DEFAULT_SIGN_IN) 
       .requestEmail() 
       .requestScopes(new Scope(Scopes.FITNESS_LOCATION_READ),new Scope(Scopes.FITNESS_ACTIVITY_READ)) 
       .build(); 
     client = new GoogleApiClient.Builder(this) 
       .enableAutoManage(this,this) 
       .addApi(Auth.GOOGLE_SIGN_IN_API, signInConfig) 
       .addApi(Fitness.HISTORY_API) 
       .addApi(Fitness.GOALS_API) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .build(); 

Nach Anmeldevorgang erfolgt Ich betreibe:

new Thread(new Runnable() { 
      @Override 
      public void run() { 
       PendingResult<DailyTotalResult> result = 
         Fitness.HistoryApi.readDailyTotal(client, TYPE_STEP_COUNT_DELTA); 
       DailyTotalResult totalResult = result.await(60,TimeUnit.SECONDS); 
       if (totalResult.getStatus().isSuccess()) { 
        DataSet totalSet = totalResult.getTotal(); 
        long total = totalSet.isEmpty()? 0 : totalSet.getDataPoints().get(0).getValue(FIELD_STEPS).asInt(); 
        p("daily steps " + total); 
       }}).start(); 
    } 

Antwort

0

Ähnliches Problem wurde here at G+ GoogleFitDevelopersGroup gestellt. Dank PujieWear konnten wir das Problem lösen. Sie müssen zwei verschiedene GoogleApiClients verwenden, einen um authentifiziert zu werden, um die Daten zu erhalten. Ich bin mir nicht sicher, ob dies die richtige Art der Verwendung von Google Sign-In ist, aber es funktioniert. // Es scheint jedoch, dass die Bereiche auf Wear 2.0 noch nicht richtig gelöst sind.

@Override 
     protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
      super.onActivityResult(requestCode, resultCode, data); 
      if (requestCode == RC_SIGN_IN) { 
       GoogleSignInResult signInResult = Auth.GoogleSignInApi.getSignInResultFromIntent(data); 
       if (signInResult.isSuccess()) { 
        acct = signInResult.getSignInAccount(); 
        editor.putString(ACCOUNT_NAME_PREFS,acct.getEmail()); 
        editor.commit(); 
        dataGoogleApiClientBuilder.setAccountName(acct.getEmail()); 
        dataGoogleApiClient = dataGoogleApiClientBuilder.build(); 
        dataGoogleApiClient.connect(); 
        [...] 
0

Sie können den richtigen Prozess in inserting data überprüfen möchten, wobei es besprochen wurde, dass die Daten einfügen in Erstellen Sie zunächst eine DataSet Instanz, bevor Sie die HistoryApi.insertData-Methode verwenden, und warten Sie synchron, oder stellen Sie eine Rückrufmethode bereit, um den Status der Einfügung zu überprüfen.

Weitere Informationen und Beispielcodes finden Sie unter full documentation.

Verwandte Themen