@ Izyzy nie spokrewnione. Pytanie, do którego się odnosisz, nie ma nic wspólnego z usługami lokalizacyjnymi.
lorddev,
1
@ Lordord Nie, nie są wyraźnie wymienione. Ale możesz użyć tego samego kodu, aby wywołać zamiar usług lokalizacyjnych. To, co mnie trochę dezorientuje, to sformułowanie mojego komentarza, które sugeruje „bezpośredni hit” (i tutaj oboje macie rację: to nie jest dokładnie to samo). Trudno powiedzieć, pół roku później, co miałem na myśli wtedy ...
Izzy
Odpowiedzi:
12
Czy można włączyć usługi lokalizacyjne (GPS lub Google NetworkLocation) przez ADB lub emulator terminala?
Polecenie to:
adb shell settings put secure location_providers_allowed gps
gdzie,
settingszmieniłby w settings.db(część com.android.providers.settings)
putjest aktualizacja klucza location_providers_allowedo wartość gpsw tabeli secure.
Powyższe polecenie nie włącza usługi lokalizacyjnej Google. Aby to również włączyć, wydaj polecenie:
adb shell settings put secure location_providers_allowed gps,network
Zostanie wyświetlone wyskakujące okienko z prośbą o wyrażenie zgody na usługi lokalizacji. W moim Androidzie 4.2.1 muszę wyrazić zgodę poprzez GUI lub za input keyeventkażdym razem, gdy włączam usługę od zera.
Jednak w moim Androidzie 5.0 mogę zapisać ustawienia w oknie dialogowym, a wykonanie polecenia sprawia, że wszystko jest idealnie wykonane od następnego razu.
Niektóre urządzenia, takie jak Lollipop, mają trzy tryby Lokalizacji, a odpowiednie wartości, które należy przekazać w powyższym poleceniu, to:
Wysoka dokładność: gps,wifi,networklub gps,network(jeśli nie chcesz włączać Wi-Fi)
Czy można to osiągnąć, ale z poziomu konsoli urządzenia, nie za pośrednictwem ADB komputera zewnętrznego?
davide
1
Tak, absolutnie. Potrzebny byłby jednak dostęp do roota lub bezprzewodowy ADB działający na urządzeniu. Spójrz na tę odpowiedź jako przykład. Wpadłbyś na pomysł.
Firelord
To kiedyś działało na Androidzie 5, ale już nie działa na Androidzie 6. Z rootem lub bez niego ustawienie nie zmienia się i pozostaje takie samo, jak skonfigurowane w systemie. Prawdopodobnie ma to związek z location_providers_allowedprzestarzałością ( developer.android.com/reference/android/provider/… ). Pomysły?
gw0,
Jeśli chcesz tylko włączyć / wyłączyć funkcję GPS, możesz przejść do strony Lokalizacja ustawień, a następnie kliknąć przycisk przełącznika. Operację tę można również wykonać za pomocą polecenia:, adb shell am start -a android.settings.LOCATION_SOURCE_SETTINGSa następnie kliknij przycisk przełącznika.
Eddy,
13
Dla Androida 6.0
Aby włączyć użycie:
Dla GPS: adb shell settings put secure location_providers_allowed +gps
Dla sieci: adb shell settings put secure location_providers_allowed +network
Wyłączyć :
GPS: adb shell settings put secure location_providers_allowed -gps
Dla sieci: adb shell settings put secure location_providers_allowed -network
Dla mnie to zadziałało, a nie zaakceptowana odpowiedź.
TheMonkeyKing
Dzięki, działa. Czy jest tak czy inaczej, możemy włączyć / wyłączyć GPS i sieć za pomocą jednego polecenia linii adb. Potrzebuję go do locaton o wysokiej dokładności. sieć gps + = wysoka dokładność
Suban Dhyako,
4
Usługa lokalizacji systemu Android oferuje różne opcje:
1) Wysoka dokładność:gps, network
Włączyć:adb shell settings put secure location_providers_allowed +gps,network
Wyłączyć:adb shell settings put secure location_providers_allowed -gps,network
2) Tylko telefon:gps
Włączyć:adb shell settings put secure location_providers_allowed +gps
Wyłączyć:adb shell settings put secure location_providers_allowed -gps
3) Oszczędzanie baterii:network
Włączyć:adb shell settings put secure location_providers_allowed +network
Wyłączyć:adb shell settings put secure location_providers_allowed -network
location_providers_allowed nie działa już w systemie Android 10 (poziom API 29).
Zamiast tego, można ustawić location_mode, aby LOCATION_MODE_HIGH_ACCURACYo wartości 3:
adb shell settings put secure location_mode 3
UWAGA: Prawdopodobnie nie będzie działać> 29, ponieważ jest to już nieaktualne, jak wspominają dokumenty w trybie lokalizacji:
Ta stała została uznana za przestarzałą na poziomie API 28. Preferowane metody sprawdzania trybu lokalizacji i nasłuchiwania zmian są za pomocą LocationManager#isLocationEnabled()i LocationManager#MODE_CHANGED_ACTION.
Nie wiem, jaki będzie programowy sposób wykonania tego przez powłokę, gdy ta stała zniknie.
Odpowiedzi:
Polecenie to:
gdzie,
settings
zmieniłby wsettings.db
(częśćcom.android.providers.settings
)put
jest aktualizacja kluczalocation_providers_allowed
o wartośćgps
w tabelisecure
.Powyższe polecenie nie włącza usługi lokalizacyjnej Google. Aby to również włączyć, wydaj polecenie:
Zostanie wyświetlone wyskakujące okienko z prośbą o wyrażenie zgody na usługi lokalizacji. W moim Androidzie 4.2.1 muszę wyrazić zgodę poprzez GUI lub za
input keyevent
każdym razem, gdy włączam usługę od zera.Jednak w moim Androidzie 5.0 mogę zapisać ustawienia w oknie dialogowym, a wykonanie polecenia sprawia, że wszystko jest idealnie wykonane od następnego razu.
Niektóre urządzenia, takie jak Lollipop, mają trzy tryby Lokalizacji, a odpowiednie wartości, które należy przekazać w powyższym poleceniu, to:
gps,wifi,network
lubgps,network
(jeśli nie chcesz włączać Wi-Fi)wifi,network
lubnetwork
tylkogps
Aby wyłączyć tryb lokalizacji
Widzieć :
Ale już wpadłem na świetny pomysł
settings put
.źródło
location_providers_allowed
przestarzałością ( developer.android.com/reference/android/provider/… ). Pomysły?adb shell am start -a android.settings.LOCATION_SOURCE_SETTINGS
a następnie kliknij przycisk przełącznika.Dla Androida 6.0
Aby włączyć użycie:
Dla GPS:
adb shell settings put secure location_providers_allowed +gps
Dla sieci:
adb shell settings put secure location_providers_allowed +network
Wyłączyć :
GPS:
adb shell settings put secure location_providers_allowed -gps
Dla sieci:
adb shell settings put secure location_providers_allowed -network
źródło
Usługa lokalizacji systemu Android oferuje różne opcje:
1) Wysoka dokładność:
gps, network
Włączyć:
adb shell settings put secure location_providers_allowed +gps,network
Wyłączyć:
adb shell settings put secure location_providers_allowed -gps,network
2) Tylko telefon:
gps
Włączyć:
adb shell settings put secure location_providers_allowed +gps
Wyłączyć:
adb shell settings put secure location_providers_allowed -gps
3) Oszczędzanie baterii:
network
Włączyć:
adb shell settings put secure location_providers_allowed +network
Wyłączyć:
adb shell settings put secure location_providers_allowed -network
źródło
location_providers_allowed
nie działa już w systemie Android 10 (poziom API 29).Zamiast tego, można ustawić
location_mode
, abyLOCATION_MODE_HIGH_ACCURACY
o wartości 3:UWAGA: Prawdopodobnie nie będzie działać> 29, ponieważ jest to już nieaktualne, jak wspominają dokumenty w trybie lokalizacji:
Nie wiem, jaki będzie programowy sposób wykonania tego przez powłokę, gdy ta stała zniknie.
źródło