11

dallo smartphone utilizzando HistoryAPI Se chiedo la cronologia dell'utente e DataType.TYPE_HEART_RATE_BPM per l'ultima ora trascorsa, a partire dall'ora corrente, mi mancano i dati dell'ultima mezz'ora.Android Wear e Google Fit: come forzare l'aggiornamento dei set di dati tra smartwatch e smartphone?

Se li chiedo a Google Fit con la stessa procedura da smartwatch, va tutto bene.

Quindi non si tratta di recupero dei dati perché dipende dal dispositivo.

Forse si tratta di un problema di sincronizzazione? Come imposto a livello di programmazione un aggiornamento dei record nel repository di Google Fitness Store?

This è quello di cui sto parlando.

EDIT: questo è come costruisco una richiesta

 DataReadRequest readRequest = new DataReadRequest.Builder() 
      .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) 
      .enableServerQueries() 
      .read(dataType) 
      .build(); 
+0

Come ha detto @Rakki nella risposta alla [sua domanda SO] (http://stackoverflow.com/questions/26670836/google-fit-data-is-diffrent-from-device-to-device-with- stesso account),> Possiamo leggere i dati globali (Cloud) aggiungendo '.enableServerQueries()' > in 'DataReadRequest'. Si riferisce a ['enableServerQueries()'] (https://developers.google.com/android/reference/com/google/android/gms/fitness/request/SessionReadRequest.Builder#enableServerQueries%28%29) del ' SessionReadRequest.Builder'. Hai provato? –

+0

Sì, l'ho fatto, ma mi manca ancora parti di dati. – user3290180

+0

Lo stesso problema si verifica quando l'orologio è fuori portata del telefono. Quando sono accoppiati di nuovo, non riesco a ottenere i dati raccolti nel frattempo. – user3290180

risposta

3

Avete dato i dispositivi abbastanza tempo per sincronizzare tutti i dati prima di effettuare una richiesta? Quando richiedi dati da HistoryAPI sul telefono, questi verranno recuperati dal cloud. Tuttavia, quando richiedi dati dall'orologio, saranno solo i dati locali da quel dispositivo indossabile. Se i dispositivi sono fuori dal raggio d'azione, presumo che ci vorrà del tempo, dopo la nuova connessione, prima che i dati dell'orologio siano disponibili nel cloud. Per quanto ne so, non c'è modo di forzare un tale aggiornamento a verificarsi più velocemente/su richiesta.

Una possibile soluzione consiste nel controllare la data e l'ora dei punti dati e utilizzare i dati locali sull'orologio se mancano dati dalla richiesta effettuata sul telefono.

+0

Sì, quando sono stati collegati l'aggiornamento è stato effettuato in circa un minuto o due. Quando sono stati scollegati e ricollegati, l'aggiornamento era una roulette russa e a volte mancavano i dati. – user3290180

+0

un metodo per forzare almeno un aggiornamento locale tra i dispositivi sarebbe utile – user3290180

+0

Sì, i dati vengono sincronizzati dall'orologio ogni minuto quando sono accoppiati. Non sei sicuro di quanto tempo ci vorrà dopo una nuova connessione, ma non dovrebbe essere molto più di questo. Personalmente ho finito per utilizzare l'API Fit solo sull'orologio per evitare questo tipo di problemi. Speriamo che Google migliorerà l'API nelle prossime versioni. Nel frattempo suppongo che tu debba aggregare i dati da solo, usando i timestamp. – TofferJ

Problemi correlati