2012-08-29 16 views
6

Czy Android LocationManager czasami korzysta z wielu megabajtów danych internetowych podczas uzyskiwania poprawek pozycji? A jeśli tak, to w jakich okolicznościach? Czy może się to zdarzyć, nawet jeśli aplikacja korzystająca z menedżera LocationManager nie ma wyraźnego pozwolenia na dostęp do Internetu?Wykorzystanie danych przez system Android LocationManager

Pytam o to, ponieważ ostatnio zauważyłem, że dane internetowe wykorzystywane przez "system operacyjny Android" (zgodnie z informacją na ekranie Ustawienia -> "Wykorzystanie danych" na moim Samsung Galaxy Note z Androidem 4.0.4) to czasami 10 megabajtów lub więcej dziennie. Eksperymentacja sugeruje, że to wykorzystanie danych występuje tylko wtedy, gdy uruchomię aplikację, którą napisałem i która korzysta z danych pozycji GPS dostarczanych przez Menedżera lokalizacji. Gdy ta aplikacja nie działa, "system operacyjny Android" wykorzystuje tylko kilka kilobajtów danych dziennie.

Jedynymi uprawnieniami w manifeście aplikacji są "android.permission.ACCESS_FINE_LOCATION" i "android.permission.WRITE_EXTERNAL_STORAGE". Nie ma pozwolenia na dostęp do Internetu. Metoda

aktywności za onStart() zawiera kod:

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

Podobny kod jest wywoływana, gdy flaga ignoreGPS jest wyłączane.

Istnieje również metoda zawierająca kod gotoLastLocation():

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

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

Ta metoda nazywa się rzadko, gdy flaga ignoreGPS jest wyłączane lub gdy użytkownik wybierze opcję menu, aby przejść do ostatniego znana lokalizacja.

Oprócz tej rzadko nazywanej metody nie ma odniesienia do "NETWORK_PROVIDER".

Czy GPS_PROVIDER domyślnie używa "wspomaganego GPS"? Jeśli tak, czy może użyć wielu megabajtów danych? Nawet jeśli nie ma pozwolenia na dostęp do Internetu?

Jeśli GPS_PROVIDER nie jest w stanie uzyskać poprawki na podstawie sygnałów GPS, czy domyślnie LocationManager korzysta z sieci komórkowej? Nawet jeśli aplikacja nie ma uprawnień sieciowych? Czy to by było policzone przez dostawcę telefonu jako dostęp do Internetu?

+0

[To] (http://developer.android.com/training/efficient-downloads/ index.html) mogą być istotne dla twoich zainteresowań. – Josh

+0

Dzięki, Josh, za sugestię, ale nie widzę niczego, co mogłoby mi pomóc. Czy czegoś brakuje? Moja aplikacja nie ma uprawnień do uzyskiwania dostępu do Internetu i nie żąda żadnych jawnych pobrań; jednak wydaje się, że zużywa wiele megabajtów danych ... Zakładam, że musi to być za pomocą Assisted GPS. Mój problem polega na zapobieganiu lub ograniczaniu tego. – prepbgg

Odpowiedz

1

Nie, nigdy, protokół SUPL, który pobiera dane pomocy, wykorzystuje tylko kilka kilobajtów danych. Nawet jeśli uruchomisz go dużo w ciągu dnia, nie będzie to dużo w porównaniu do użycia przeglądarki.

Google czasami przesyła dane WiFi i użycie aplikacji (creepy I know), korzystając z NETWORK_PROVIDER. Ale nawet to niewiele.

Czy możesz spróbować zabić wszystkie procesy działające w tle lub lepiej odinstalować niechciane aplikacje?

Mój najlepszy przypuszczenie to, że można używać do MapView który pobiera fragmenty map i zdjęć satelitarnych - to dane jest ciężki

+0

Przepraszam za powolne odpowiadanie. Nie było mnie. RE SUPL: Moja aplikacja żąda aktualizacji lokalizacji co 2 sekundy (aby zapewnić płynne aktualizowanie wyświetlania na mapie), więc dostęp do Internetu może wynosić 60 x 30 x "kilka kilobajtów" na godzinę, jeśli dla każdego żądania używany jest protokół SUPL. Czy to może być odpowiedź? Czy SUPL jest używany, nawet jeśli nie ma pozwolenia na dostęp do Internetu? Re procesy w tle: jaki proces miałby dostęp do Internetu tylko wtedy, gdy moja aplikacja jest uruchomiona? Ponowne kafelki mapy: moja aplikacja używa tylko kafelków mapy przechowywanych na urządzeniu. – prepbgg

Powiązane problemy