Perché i conteggi dei conteggi di Google Fit differiscono

Ho utilizzato l'API del sensore per contare i passaggi. Ho visto che è diverso da Google Fit App. L'applicazione di Google Fit utilizza altre API di Sensor API?

Snippet di codice:

  • Ottenere l'errore "attività Java.lang.IllegalStateException è stato distrutto" quando si utilizzano tabs con ViewPager
  • onConfigurationchanged non viene chiamato sopra jellybean (4.2.1)
  • Cambiare la luminosità in base alla luce circostante in android
  • Gradle non è in grado di risolvere le dependencies in Android Studio
  • Xamarin Android ProGuard Abilita
  • Android e Facebook condividono l'intenzione
  • Fitness.SensorsApi.add( mGoogleApiFitnessClient, new SensorRequest.Builder() .setDataType(DataType.TYPE_STEP_COUNT_DELTA) .setSamplingRate(5, TimeUnit.SECONDS) .build(), mListener) .setResultCallback(new ResultCallback<Status>() { @Override public void onResult(Status status) { if (status.isSuccess()) { Log.i(TAG, "Listener registered!"); } else { Log.i(TAG, "Listener not registered."); } } }); 

    I punti contano il risultato

    La mia applicazione: 2484

    Google Fit: 4636

    Mi mancava niente?

  • Invia una richiesta al servizio web each 5 secondi
  • come centrare le icone nella barra degli strumenti nello studio android
  • Disegnare animazioni ad alta risoluzione con alta frequenza fotogrammi su Android
  • Cambiare il nome del pacchetto per Android in React Native
  • MPAndroidChart - Perché il constructor di BarData non funziona?
  • Animatore di oggetti che non rimuove l'ascolto di aggiornamento android
  • 2 Solutions collect form web for “Perché i conteggi dei conteggi di Google Fit differiscono”

    Se utilizzi il metodo Fitness.HistoryApi.readData() tuoi valori corrisponderanno o alless saranno molto vicini a ciò che viene visualizzato in Google Fit. Quello che vedi nell'app Google Fit è i dati della cronologia. Da, la storia intendo la storia fino all'ultimo aggiornamento a Google cloud storage per i dati di fitness. Potrebbe essere solo un minuto fa. Apparentemente, google fit carica i dati di salute in batch. È per questo che non vedi gli aggiornamenti in tempo reale nell'applicazione Google Fit. ad esempio i passaggi non cambiano in volo mentre camminate ma aggiornati a intervalli.

    Leggi la documentazione di Google Fit per ulteriori informazioni su come effettuare chiamate HistoryApi . Questa pagina presenta un esempio dettagliato di recupero dei conteggi dei passi.

    Quindi, se carichi i dati e leggete la cronologia, i dati corrisponderanno a quello che mostra nell'app Google Fit. In questo process potrebbe anche combinare dati provenienti da altre fonti, se esistenti, e dare un valore normalizzato.

    Innanzitutto, ricevi il valore del sensore, che viene utilizzato per gli aggiornamenti in tempo reale, e non per la valutazione statistica.

    Oltre a ciò, stai leggendo "delta" di passi. "Delta" indica quante fasi l'utente ha acquisito dall'ultimo aggiornamento. Viene utilizzato per build statistiche, ad esempio statistiche camminate al giorno, all'ora, al mese, ecc.

    Quello che vuoi leggere è "passi aggregati" – che nel tuo caso sono "passi totali al giorno". A tal fine si utilizza HistoryApi

    Hai due opzioni:

    1. Lettura dei dati aggregati

     DataReadRequest readRequest = new DataReadRequest.Builder() // The data request can specify multiple data types to return, effectively // combining multiple data queries into one call. // In this example, it's very unlikely that the request is for several hundred // datapoints each consisting of a few steps and a timestamp. The more likely // scenario is wanting to see how many steps were walked per day, for 7 days. .aggregate(DataType.TYPE_STEP_COUNT_DELTA, DataType.AGGREGATE_STEP_COUNT_DELTA) // Analogous to a "Group By" in SQL, defines how data should be aggregated. // bucketByTime allows for a time span, whereas bucketBySession would allow // bucketing by "sessions", which would need to be defined in code. .bucketByTime(1, TimeUnit.DAYS) .setTimeRange(startTime, endTime, TimeUnit.MILLISECONDS) .build(); PendingResult<DataReadResult> pendingResult = Fitness.HistoryApi.readData(client, readRequest); //synchronous execution, should happen on background thread DataReadResult result = pendingResult.await(CONNECTION_TIMEOUT_SECONDS, TimeUnit.SECONDS); 
    1. Lettura totale giornaliero – Google Fit ha una function di comodità per leggere il totale del giorno corrente

       PendingResult<DailyTotalResult> stepsTotalPending = Fitness.HistoryApi .readDailyTotal(client, DataType.TYPE_STEP_COUNT_DELTA); //synchronous execution DailyTotalResult stepsTotalResult = stepsTotalPending .await(CONNECTION_TIMEOUT_SECONDS, TimeUnit.SECONDS); 

    È lo stesso del caso 1 con startTime = current day's midnight e endTime=now

    Qui puoi utilizzare qualsiasi tipo di dati che supporti l'aggregazione, ad esempio calorie e distanza. Vedi questo link per i dettagli

    Se utilizzi la soluzione 1 o 2 e hai ancora valori diversi, consulta questa FAQ – è una situazione nota e l'app Google Fit può calcolare i passaggi / calorie / distanza con un approccio più sofisticato

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.