2012-08-29 7 views
6

Android LocationManager talvolta utilizza megabyte di dati Internet quando ottiene le correzioni di posizione? E se sì, in quali circostanze? Può accadere anche quando l'app che utilizza il LocationManager non dispone dell'autorizzazione esplicita per accedere a Internet?Utilizzo dati Internet da LocationManager Android

Lo chiedo perché ho recentemente notato che i dati utilizzati da internet "OS Android" (come riportato da Impostazioni -> schermata "Utilizzo dati" sul mio Samsung Galaxy Note con Android 4.0.4) a volte è di 10 megabyte o più al giorno. La sperimentazione suggerisce che questo utilizzo dei dati si verifica solo quando eseguo un'applicazione che ho scritto e che utilizza i dati di posizione GPS forniti dal Location Manager. Quando questa app non è in esecuzione "Sistema operativo Android" utilizza solo pochi kilobyte di dati al giorno.

Le uniche autorizzazioni nel manifest di app sono "android.permission.ACCESS_FINE_LOCATION" e "android.permission.WRITE_EXTERNAL_STORAGE". Non esiste alcuna autorizzazione per l'accesso a Internet.

metodo onStart() del l'attività contiene il codice:

  if (!mapview .ignoreGPS) { 
      lm.requestLocationUpdates(LocationManager. GPS_PROVIDER , gpsMinTime , gpsMinDistance , this); 
    }  

codice simile viene chiamato quando la bandiera ignoreGPS viene alternata off.

V'è anche un metodo di gotoLastLocation() contenente il codice:

  Location l = lm.getLastKnownLocation(LocationManager. GPS_PROVIDER); 

      if (l == null) { 
       l = lm .getLastKnownLocation(LocationManager. NETWORK_PROVIDER); 
      } 

Questo metodo viene chiamato solo raramente, quando la bandiera ignoreGPS viene alternata spento o quando l'utente seleziona un'opzione di menu per andare all'ultima posizione nota

Oltre a questo metodo raramente chiamato, non vi è alcun riferimento a "NETWORK_PROVIDER".

GPS_PROVIDER utilizza "GPS assistito" per impostazione predefinita? In tal caso, questo potrebbe utilizzare più megabyte di dati? Anche se non c'è il permesso di internet?

Se GPS_PROVIDER non è in grado di ottenere una correzione dai segnali GPS, LocationManager utilizza di default la rete di telefoni cellulari? Anche se l'app non ha il permesso di rete? Questo verrà conteggiato dal provider telefonico come accesso ai dati Internet?

+0

[Questo] (http://developer.android.com/training/efficient-downloads/ index.html) potrebbe essere rilevante per i tuoi interessi. – Josh

+0

Grazie, Josh, per il suggerimento ma non riesco a vedere nulla che mi aiuti. Mi sto perdendo qualcosa? La mia app non ha il permesso di accedere a Internet e non richiede download espliciti; tuttavia sembra consumare più megabyte di dati ... presumo che ciò avvenga tramite l'uso del GPS assistito. Il mio problema è come prevenirlo o limitarlo. – prepbgg

risposta

1

No mai, il protocollo SUPL che scarica i dati di assistenza utilizza solo pochi kilobyte di dati. Anche se lo esegui molto durante il giorno, non sarà molto paragonato a quello del browser.

Google a volte carica dati WiFi e utilizzo dell'applicazione (inquietante lo so), quando si utilizza lo NETWORK_PROVIDER. Ma anche quello non è molto.

Puoi provare a eliminare tutti i processi in background o disinstallare meglio le app indesiderate?

La mia ipotesi migliore è che si potrebbe utilizzare un MapView che scarica Mappa piastrelle e immagini satellitari - questi dati è pesante

+0

Mi spiace essere lento a rispondere. Sono stato via. Re SUPL: la mia app richiede aggiornamenti di posizione ogni 2 secondi (per assicurare una visualizzazione uniformemente aggiornata su una mappa), quindi l'accesso a Internet potrebbe essere 60 x 30 x "pochi kilobyte" all'ora se il protocollo SUPL viene utilizzato per ogni richiesta. Potrebbe essere questa la risposta? Il SUPL è utilizzato anche se non è consentito l'accesso a Internet? Re processi in background: quale tipo di processo avrebbe accesso a Internet solo quando la mia app è in esecuzione? Riquadri mappa: la mia app utilizza solo i riquadri mappa memorizzati sul dispositivo. – prepbgg