Sposób na uzyskanie współrzędnych lokalizacji z wiersza poleceń

10

Szukam wiersza polecenia lub serii poleceń, które mogą zrzucić lub wyświetlić szerokość i długość geograficzną na zrootowanym urządzeniu.

Łączę się z urządzeniem za pomocą powłoki ADB. Sposób, który spowoduje, że współrzędne będą logowane do wiersza poleceń, jest również dla mnie dobry.

Erb
źródło

Odpowiedzi:

11

Wygląda na to, że istnieje sposób:

adb shell lokalizacja dumpsys> dumpsys.txt

Otrzymasz plik ze wszystkimi informacjami o usłudze lokalizacji. W tym pliku wyszukaj 'Last Known Locations'i powinieneś zobaczyć coś takiego:

passive: Location[network 92.915479,55.610965 acc=22 et=+1d4h10m34s255ms {Bundle[{noGPSLocation=Location[network 92.915479,55.610965 acc=22 et=+1d4h10m34s255ms {Bundle[{coarseLocation=Location[network 92.918919,55.603997 acc=2000 et=+1d4h10m34s255ms]}]}], networkLocationSource=cached, networkLocationType=wifi, travelState=stationary}]}]

network: Location[network 92.915479,55.610965 acc=22 et=+1d4h10m34s255ms {Bundle[{noGPSLocation=Location[network 92.915479,55.610965 acc=22 et=+1d4h10m34s255ms {Bundle[{coarseLocation=Location[network 92.918919,55.603997 acc=2000 et=+1d4h10m34s255ms]}]}], networkLocationSource=cached, networkLocationType=wifi, travelState=stationary}]}]

Oczywiście lista będzie zawierać inną pozycję, jeśli w urządzeniu jest włączony dostawca GPS.

Korzystając z kodu Androida, próbowałem dowiedzieć się, w jaki sposób aplikacje uzyskują lokalizację, gdy używają LocationManager.getLastKnownLocation (). Po kilku obserwacjach znalazłem się tutaj w LocationManagerService . która implementuje getLastLocation, a także funkcję zrzutu.

O ile wiem, współrzędne nie są przechowywane w żadnym pliku. Są one przechowywane w pamięci w haszapie i zrzucane dla polecenia dumpsys. Wyjaśnia to również, dlaczego wyszukiwanie heirarchii katalogów nie ujawniło żadnych plików z informacjami GPS.

Jeśli chcesz te informacje w bardziej standardowym formacie, trzeba będzie wziąć trasę aplikacji i iść z czymś takim to . Ta aplikacja eksportuje informacje do pliku GPS lub KML, które można przesyłać do aplikacji opartych na lokalizacji geograficznej.

PS: Działa to również na nierootowanym urządzeniu.

Rohan
źródło
1
Dla użytkownika systemu Windows: adb shell dumpsys location > dumpsys.txtwyprowadzenie wyniku do pliku.
Andrew T.
Próbuję wykryć status GPS (aktywny, pasywny) za pomocą emulatora adb shell, Last Known Locationsinformacje są zawsze puste, nawet ręcznie włączam GPS.
talha06