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?
[To] (http://developer.android.com/training/efficient-downloads/ index.html) mogą być istotne dla twoich zainteresowań. – Josh
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