2013-07-24 19 views
11

Ho avuto modo di programmare Android da altre piattaforme che ho usato con il GPS. sugli altri platfroms ho avuto accesso al GPS HW (ho avuto un driver GPS di basso livello) e da questo ho potuto ottenere aggiornamenti GPS 5 volte al secondo e ancora più Ora lavoro con Samsung Galaxy S2 (che mi è chiaro che il suo GPS è molto forte e in grado di fornire diversi aggiornamenti al secondo Attualmente quando ho creato il provider GPS per fornire gli aggiornamenti in minima distanza e tempo minimo come questo:ottenere il più alto tasso di aggiornamento GPS dall'hardware GPS nel mio Android

mlocManager.requestLocationUpdates( 
    LocationManager.GPS_PROVIDER, 0, 0, mlocListener 
); 

ottengo 1 aggiornamento al secondo (o 800ms come il divario più piccolo tra due aggiornamenti) che è troppo basso per la mia applicazione C'è un modo per forzare il GPS HW a segnalare più aggiornamenti in qualche modo? Suppongo che non sia esposto all'utente ma c'è ancora un modo per accedere ai registri del GPS HW in qualche modo?

+0

Dubito che è possibile ottenere più di 1 ora. Inoltre dubito che la tua app non possa funzionare con gli intervalli di 1s, per quanto riguarda l'interpolazione? – AlexWien

+0

Ho un altro GPS Bluetooth da QStarz che farà 10hz. – user2613743

+0

In effetti, l'interpolazione è una soluzione. Sto provando a localizzare la posizione di un'auto, quindi 1 secondo a 100kmh è a ~ 30 metri e ho bisogno di una granularità migliore. inoltre, mi piacerebbe sapere (se qualche corpo sa qui) qual è il ritardo del calcolo del GPS. Voglio dire, quando riporta la posizione, quanto tempo è passato dal punto in cui eravamo in questa posizione. questo richiede anche l'interpolazione per capire dove siamo ora, ad esempio. quindi se questo è anche nella zona di 1 secondo o mezzo secondo, quindi dobbiamo interpolare 2 secondi per dove siamo ora e questo è davvero male per me. – user2610687

risposta

3

Attualmente non è possibile ottenere gli aggiornamenti più velocemente di una volta al secondo nella maggior parte del telefono. Questo è il limite di gps dell'hardware.

Di solito nella maggior parte dei telefoni, è a 1 ora.

Tutto dipende da hardware e scenario in cui si sta utilizzando (Indoor, Outdoor)

Ma ancora una volta, si potrebbe verificare usando

LocationRequest setFastestInterval (long millis) 

Questo consente all'applicazione di acquisire passivamente posizioni a un ritmo più veloce di quanto acquisti attivamente posizioni, risparmiando energia.

A differenza di setInterval (long), questo parametro è esatto. La tua applicazione non riceverà mai aggiornamenti più velocemente di questo valore.

Questo metodo imposta la velocità più rapida in millisecondi in cui la tua app può gestire gli aggiornamenti di posizione. È necessario impostare questa velocità perché anche altre app influenzano la frequenza con cui gli aggiornamenti vengono inviati. I servizi di localizzazione inviano gli aggiornamenti alla velocità più elevata che qualsiasi app ha richiesto chiamando LocationRequest.setInterval().

Se questa velocità è più rapida di quella che può gestire l'app, è possibile che si verifichino problemi con sfarfallio dell'interfaccia o di trabocco di dati.

+0

potresti pubblicare un link alla risorsa in cui hai ottenuto le informazioni sul limite hardware gps? –