Kann ich Bluetooth vom Terminal aus neu starten?


8

Ich habe ein verwurzeltes Galaxy S 2 (I9100) und habe mich gefragt, ob ich das Bluetooth auf meinem Telefon über den Terminal-Client auf meinem Telefon neu starten kann.

Antworten:


10

Der folgende Terminalbefehl sollte Bluetooth über die ADB-Shell oder die Terminal Emulator-App aktivieren:

su
am start -a android.bluetooth.adapter.action.REQUEST_ENABLE

In den meisten Android-Versionen zeigt dieser Befehl dem Benutzer ein Popup-Fenster an, in dem er aufgefordert wird, die Anforderung zum Aktivieren von BT zu bestätigen. Ich glaube, dies wurde aus Sicherheitsgründen getan, wenn eine App, die kein System ist, BT umschaltet.

Ich habe leider keine Möglichkeit gefunden, BT über einen Shell-Befehl zu deaktivieren.

Mit WiFi ist es viel einfacher und fordert den Benutzer nicht zur Erlaubnis auf:

su
svc wifi enable

wird es einschalten, und

su
svc wifi disable

wird es ausschalten.


Danke für die Antwort. Ich werde das gleiche versuchen. Könnten Sie das auch für WiFi auflisten?
Clyde Lobo

Bearbeitet meine Antwort mit den WiFi-Informationen. Ich habe jedoch keine Möglichkeit gefunden, BT über einen Terminalbefehl zu deaktivieren :(
Chahk

6

In android.bluetooth.IBluetoothManager gibt es einige Parameter

TRANSACTION_registerAdapter = (android.os.IBinder.FIRST_CALL_TRANSACTION + 0); TRANSACTION_unregisterAdapter = (android.os.IBinder.FIRST_CALL_TRANSACTION + 1); TRANSACTION_registerStateChangeCallback = (android.os.IBinder.FIRST_CALL_TRANSACTION + 2); TRANSACTION_unregisterStateChangeCallback = (android.os.IBinder.FIRST_CALL_TRANSACTION + 3); TRANSACTION_isEnabled = (android.os.IBinder.FIRST_CALL_TRANSACTION + 4); TRANSACTION_enable = (android.os.IBinder.FIRST_CALL_TRANSACTION + 5); TRANSACTION_enableNoAutoConnect = (android.os.IBinder.FIRST_CALL_TRANSACTION + 6); TRANSACTION_disable = (android.os.IBinder.FIRST_CALL_TRANSACTION + 7);
TRANSACTION_getAddress = (android.os.IBinder.FIRST_CALL_TRANSACTION + 8); TRANSACTION_getName = (android.os.IBinder.FIRST_CALL_TRANSACTION + 9);

android.os.IBinder.FIRST_CALL_TRANSACTION = 1

SO, mit gerootetem Gerät, wenn Sie Bluetooth im ADB Shell Super User-Modus (su) ausschalten möchten

service call bluetooth_manager 8

Wenn Sie Bluetooth wieder einschalten möchten

service call bluetooth_manager 6

Gerät, das ich benutze, ist HTC One mit Android 4.4.2
Jamy

Bestätigen Sie, dass dies unter Android 4.2.2
funktioniert

Service bluetooth_manager does not existauf Android 4.1.2
David

3

Bluetooth aktivieren:
service call bluetooth 3

Bluetooth deaktivieren:
service call bluetooth 4


Negativer Wähler: Können Sie helfen, das Problem mit dieser Antwort zu identifizieren (nach der Bearbeitung)? Diese funktionierten in meinem verwurzelten Telefon danach su- also technisch nichts falsches AFAIK.
Narayanan

1
Bluetooth aktivieren: Serviceanruf Bluetooth 3 Bluetooth deaktivieren: Serviceabruf Bluetooth 5 funktioniert auf meinem HTC Desire X
Anvesh Yalamarthy

1
service call bluetooth 5funktioniert in meinem Android 4.2.1, um Bluetooth zu deaktivieren.
Feuerlord

Auf einem "Galaxy Fame GT-6810P" sind die korrekten Zahlen 3 und 5.
David

1

Dies funktioniert aus einer Shell:

am start -a android.bluetooth.adapter.action.REQUEST_ENABLE & input keyevent 20 & adb shell input keyevent 21 & adb shell input keyevent 23

Grundsätzlich wird der Dialog angezeigt und anschließend werden Tastenanschläge gesendet, um den Befehl zu akzeptieren


0

Meine Lösung funktioniert.

am start -a android.bluetooth.adapter.action.REQUEST_ENABLE
sleep 1
input tap 872 1072

Beachten Sie, dass beim Ausführen des ersten Befehls ein Fenster herausspringt und Sie aufgefordert werden, ALLOW auszuwählen.

Sie benötigen also den Befehl zum automatischen Klicken.

Sie können die X-, Y-Position ermitteln, indem Sie die Entwickleroptionen-> Zeigerposition aktivieren und dann die Schaltfläche ALLOW berühren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.