Autore Topic: Calcolare la distanza percorsa  (Letto 563 volte)

Offline Thunderjet

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Motorola Motog 2
  • Sistema operativo:
    Windows 8
Calcolare la distanza percorsa
« il: 07 Luglio 2015, 22:22:30 CEST »
0
Allora, prima cosa scusate se faccio domande sceme ma sono un niubbo, ho letto tutti i post della sezione e non mi sembra di aver trovato la risposta quindi chiedo.

Il mio problema o meglio i miei problemi sono 2

una volta partita l'app vorrei calcolare la distanza percorsa diciamo ogni secondo o 10 mt e aggiornare il campo che visualizza il dato aggiornadolo sommandolo al dato precedente, che puo essere modificato ma questo è il meno so come prendere il dato attuale e poi lo sommo, a me serve solo calcolare lo spazio percorso, questo puo essere attivato dal onLocationChanged perchè giustamente lo spostamento avviene solo se mi muovo.

Il secondo è che vorrei che vorrei rilevare la velocità secondo per secondo.
Utilizzando :

speed = location.getSpeed()

nell' onLocationChanged questo però mi si aggiorna solo se mi muovo ma se mi fermo mi lascia il valore dell'ultimo aggiornamento, invecde di 0.

Grazie dell'aiuto

Offline arlabs

  • Utente normale
  • ***
  • Post: 434
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Calcolare la distanza percorsa
« Risposta #1 il: 09 Luglio 2015, 15:35:51 CEST »
0
Da quello che ho letto in un altro post, immagino tu stia usando il LocationManager.

La onLocationChanged ti viene chiamata secondo criteri specificati quando la registri.
Tempo e spazio minimi che specifichi nella requestLocationUpdates.

Quindi se sei fermo, la distanza sarà inferiore alla minDistance specificata.
Se vuoi avere aggiornamenti continui, indipendenti dalla posizione metti minDistance = 0.

Ciao.


Offline Thunderjet

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Motorola Motog 2
  • Sistema operativo:
    Windows 8
Re:Calcolare la distanza percorsa
« Risposta #2 il: 09 Luglio 2015, 15:49:48 CEST »
0
si grazie poi ci ero arrivato  da solo :) mi rimane il prb di come calcolare la distanza percorsa. ho trovato in igro del codice che calcola la distanza tra 2 posizioni, ma come faccio a memorizzare e riutilizzare il vecchio punto ?

Offline arlabs

  • Utente normale
  • ***
  • Post: 434
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:Calcolare la distanza percorsa
« Risposta #3 il: 09 Luglio 2015, 17:47:05 CEST »
0
Per calcolare la distanza, il tipo Location ha un metodo distanceTo (o distanceBetween)
Per mantenere la location fanne una copia con il costruttore di copia.
Per salvare una posizione io faccio così:

Codice (Java): [Seleziona]
            prefEdit.putString(LASTLOCATION_KEY, loc.toString());
E così per caricarla:
Codice (Java): [Seleziona]
            String locationStr = getPreferences( MODE_PRIVATE ).getString(LASTLOCATION_KEY, null);
            if( locationStr != null )
                loc = new Location(locationStr);

Ciao

Post unito: [time]09 Luglio 2015, 17:53:47 CEST[/time]
P.S. Giusto un appunto. Se vuoi misurare una distanza percorsa come somma delle distanze delle posizioni tornate dalla onLocationChanged, credo che rischi di sovrastimare parecchio la lunghezza del percorso. Era un problema comune in molte app di tracking della corsa (qualche anno fa, ora è una vita che non ne uso una). I punti tornati dal GPS possono ballare parecchio attorno alla tua posizione reale. Credo dovresti fare un post processing delle posizioni. Magari facendo un interpolazione ad n punti tenendo conto dell'accuracy di ogni punto ed escludendo gli outlayer.
« Ultima modifica: 09 Luglio 2015, 17:55:05 CEST da arlabs »