Ist es möglich, Ortungsdienste über Shell zu aktivieren?

14

Ist es möglich, Ortungsdienste (GPS oder Google NetworkLocation) über ADB oder Terminal Emulator zu aktivieren? Ich bin auf einem verwurzelten Telefon.

Extra Points: Können auch andere systembezogene Einstellungen geändert werden?

Minikeks
quelle
Diese Frage wurde bereits gestellt. Siehe: Kann ich einige Android-Einstellungen über die Befehlszeile ändern?
Izzy
2
@ Izzy Ich glaube nicht, dass das ein Duplikat ist.
Matthew Read
2
@ Izzy nicht verwandt. Die Frage, mit der Sie verknüpft sind, hat nichts mit Ortungsdiensten zu tun.
Lorddev
1
@lorddev Nein, sie werden nicht ausdrücklich erwähnt. Sie können jedoch denselben Code verwenden, um die Absicht für Ortungsdienste aufzurufen. Was mich ein wenig verwirrt, ist die Formulierung meines Kommentars, die einen "direkten Treffer" suggeriert (und hier haben Sie beide Recht: Es ist nicht genau dasselbe). Schwer zu sagen, ein halbes Jahr später, was ich damals im Sinn hatte ...
Izzy

Antworten:

12

Ist es möglich, Ortungsdienste (GPS oder Google NetworkLocation) über ADB oder Terminalemulator zu aktivieren?

Der Befehl lautet:

adb shell settings put secure location_providers_allowed gps

wo,

  • settingswürde Änderungen an settings.db(Teil von com.android.providers.settings) vornehmen
  • putist das Aktualisieren des Schlüssels location_providers_allowedmit dem Wert gpsin der Tabelle secure.

Mit dem oben genannten Befehl wird der Standortdienst von Google nicht aktiviert. Um es ebenfalls zu aktivieren, geben Sie den folgenden Befehl ein:

adb shell settings put secure location_providers_allowed gps,network

Es wird ein Popup-Fenster angezeigt, in dem Sie den Standortdiensten zustimmen. In meinem Android 4.2.1 muss ich über die GUI zustimmen oder input keyeventjedes Mal, wenn ich den Dienst von Grund auf neu aktiviere.

                                                                    IMG: 4.2.1

In meinem Android 5.0 kann ich jedoch die Einstellungen im Dialog speichern und die Befehlsausführung macht die Dinge ab dem nächsten Mal perfekt.

                                                                    IMG: 5.0

Einige Geräte wie Lollipop haben drei Locations-Modi, und die relevanten Werte, die im oben genannten Befehl übergeben werden müssen, sind:

  • Hohe Genauigkeit: gps,wifi,networkoder gps,network(wenn Sie kein WLAN möchten)
  • Batteriesparen: wifi,networkoder networknur
  • Nur Gerät: gps

So deaktivieren Sie den Standortmodus

adb shell settings put secure location_providers_allowed ' '

Ist es auch möglich, andere systembezogene Einstellungen zu ändern?

Sehen :

Aber ich habe schon eine große Idee mit gegeben settings put.

Feuerlord
quelle
Wäre es möglich, dasselbe zu erreichen, aber von der Gerätekonsole aus, nicht über die ADB eines externen Computers?
Davide
1
Ja absolut. Sie benötigen jedoch Root-Zugriff oder ADB-WLAN auf dem Gerät. Schauen Sie sich diese Antwort als Beispiel an. Sie würden eine Idee bekommen.
Feuerfürst
Dies funktionierte unter Android 5, aber nicht mehr unter Android 6. Mit oder ohne Root ändert sich die Einstellung nicht und bleibt unverändert, wie sie auf dem System konfiguriert ist. Es hat wahrscheinlich etwas damit zu tun, location_providers_alloweddass es veraltet ist ( developer.android.com/reference/android/provider/… ). Ideen?
gw0
Wenn Sie nur die GPS-Funktionalität ein- und ausschalten möchten, können Sie zur Seite mit den Standorteinstellungen wechseln und dann auf die Schaltfläche zum Umschalten klicken. Diese Operation kann auch mit dem Befehl: ausgeführt adb shell am start -a android.settings.LOCATION_SOURCE_SETTINGSwerden. Klicken Sie dann auf die Schaltfläche zum Umschalten.
Eddy
13

Für Android 6.0

So aktivieren Sie die Verwendung:

Für GPS: adb shell settings put secure location_providers_allowed +gps

Für Netzwerk: adb shell settings put secure location_providers_allowed +network

Etwas deaktivieren :

GEOGRAPHISCHES POSITIONIERUNGS SYSTEM : adb shell settings put secure location_providers_allowed -gps

Für Netzwerk: adb shell settings put secure location_providers_allowed -network

Aditya S
quelle
Das hat bei mir geklappt, nicht die akzeptierte Antwort.
Matt D
Danke, es funktioniert. Gibt es sowieso können wir GPS und Netzwerk mit einem Zeilen-ADB-Befehl aktivieren / deaktivieren. Ich brauche es für eine genaue Ortung. GPS + Netzwerk = hohe Genauigkeit
Suban Dhyako
4

Der Android Location Service bietet verschiedene Optionen:

1) Hohe Genauigkeit: gps, network

Aktivieren: adb shell settings put secure location_providers_allowed +gps,network

Deaktivieren: adb shell settings put secure location_providers_allowed -gps,network

2) Nur Telefon: gps

Aktivieren: adb shell settings put secure location_providers_allowed +gps

Deaktivieren: adb shell settings put secure location_providers_allowed -gps

3) Batteriesparen: network

Aktivieren: adb shell settings put secure location_providers_allowed +network

Deaktivieren: adb shell settings put secure location_providers_allowed -network

Parth Naik
quelle
0

location_providers_allowed funktioniert nicht mehr für Android 10 (API Level 29).

Stattdessen können Sie das location_modeauf LOCATION_MODE_HIGH_ACCURACYmit einem Wert von 3 festlegen :

adb shell settings put secure location_mode 3

HINWEIS: Funktioniert wahrscheinlich nicht> v29, da dies bereits veraltet ist, da in den Dokumenten zum Standortmodus Folgendes erwähnt wird:

Diese Konstante wurde in API-Ebene 28 nicht mehr empfohlen. Die bevorzugten Methoden zum Überprüfen des Standortmodus und zum Abhören von Änderungen sind über LocationManager#isLocationEnabled()und LocationManager#MODE_CHANGED_ACTION.

Ich weiß nicht, wie man das programmatisch durch die Shell machen kann, wenn diese Konstante verschwindet.

Ein anderer Dave
quelle