2012-08-29 8 views
6

Verwendet Android LocationManager manchmal Multi-Megabytes von Internet-Daten beim Erhalten von Positions-Fixes? Und wenn ja, unter welchen Umständen? Kann das passieren, selbst wenn die App, die den LocationManager benutzt, keine ausdrückliche Erlaubnis hat, auf das Internet zuzugreifen?Internet-Datennutzung durch Android LocationManager

Ich frage dies, weil ich kürzlich festgestellt habe, dass Internet-Daten von "Android OS" (wie von den Einstellungen -> "Datennutzung" Bildschirm auf meinem Samsung Galaxy Note mit Android 4.0.4 berichtet) ist manchmal 10 Megabyte oder mehr pro Tag. Experimente deuten darauf hin, dass diese Datennutzung nur auftritt, wenn ich eine App ausführe, die ich geschrieben habe und die vom Location Manager bereitgestellte GPS-Positionsdaten verwendet. Wenn diese App nicht läuft, verwendet "Android OS" nur wenige Kilobyte Daten pro Tag.

Die einzigen Berechtigungen im Manifest der App sind "android.permission.ACCESS_FINE_LOCATION" und "android.permission.WRITE_EXTERNAL_STORAGE". Es gibt keine Erlaubnis für den Internetzugang.

Die onStart() Methode Aktivität enthält den Code:

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

ähnlicher Code aufgerufen wird, wenn der ignoreGPS Flag AUS umgeschaltet wird.

Es gibt auch eine gotoLastLocation() -Methode mit dem Code:

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

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

Diese Methode wird nur selten genannt wird, wenn das ignoreGPS Flag ein- und ausgeschaltet wird, oder wenn der Benutzer eine Menüoption zum letzten gehen bekannter Ort

Abgesehen von dieser selten aufgerufenen Methode gibt es keinen Hinweis auf "NETWORK_PROVIDER".

Verwendet GPS_PROVIDER standardmäßig "assistiertes GPS"? Wenn ja, könnte dies mehrere Megabyte an Daten verwenden? Auch wenn es keine Internet-Erlaubnis gibt?

Wenn GPS_PROVIDER keine GPS-Signale empfangen kann, verwendet LocationManager dann standardmäßig das Mobilfunknetz? Selbst wenn die App keine Netzwerkberechtigung hat? Würde dies vom Telefonanbieter als Internetdatenzugang gezählt?

+0

[Dies] (http://developer.android.com/training/efficient-downloads/ index.html) kann für Ihre Interessen relevant sein. – Josh

+0

Danke, Josh, für den Vorschlag, aber ich kann nichts sehen, das mir hilft. Fehle ich etwas? Meine App hat keine Zugriffsrechte für das Internet und fordert keine expliziten Downloads an. es scheint jedoch mehrere Megabyte Daten zu verbrauchen ... Ich nehme an, dass dies durch den Einsatz von Assisted GPS geschehen muss. Mein Problem ist, wie man das verhindert oder einschränkt. – prepbgg

Antwort

1

Nein, das SUPL-Protokoll, das Unterstützungsdaten herunterlädt, verwendet nur einige Kilobyte Daten. Selbst wenn Sie es tagsüber viel laufen, wird es nicht viel verglichen mit der Browsernutzung sein.

Google lädt manchmal WiFi Daten und Anwendung (gruselig ich weiß), wenn Sie die NETWORK_PROVIDER verwenden. Aber selbst das ist nicht viel.

Können Sie versuchen, alle Hintergrundprozesse zu löschen oder unerwünschte Apps zu deinstallieren?

Meine beste Vermutung ist, dass Sie eine MapView verwenden werden könnten, die Kartenkacheln herunterlädt und Satellitenbilder - diese Daten sind schwer

+0

Sorry, langsam antworten zu können. Ich war weg. Re SUPL: Meine App fordert alle 2 Sekunden Ortsaktualisierungen an (um eine reibungslose Aktualisierung der Darstellung auf einer Karte zu gewährleisten), so dass der Internetzugang 60 x 30 x "einige Kilobyte" pro Stunde beträgt, wenn das SUPL-Protokoll für jede Anfrage verwendet wird. Könnte dies die Antwort sein? Wird SUPL verwendet, auch wenn keine Zugangsberechtigung für das Internet besteht? Re Hintergrundprozesse: Welche Art von Prozess würde nur auf das Internet zugreifen, wenn meine App läuft? Re Kartenkacheln: Meine App verwendet nur Kartenkacheln, die auf dem Gerät gespeichert sind. – prepbgg