Можно ли перезагрузить Bluetooth с терминала?

8

У меня рутированная Galaxy S 2 (I9100), и мне было интересно, могу ли я перезапустить Bluetooth на моем телефоне через клиент терминала на моем телефоне.

Клайд Лобо
источник

Ответы:

10

Следующая команда терминала должна включить Bluetooth через оболочку adb или приложение Terminal Emulator:

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

В большинстве версий Android эта команда отображает всплывающее окно для пользователя с просьбой подтвердить запрос на включение BT. Я считаю, что это было сделано в целях безопасности всякий раз, когда приложение, которое не является системой, переключает BT.

Я не нашел способ отключить BT с помощью команды оболочки, к сожалению.

С WiFi это намного проще и не запрашивает у пользователя разрешения:

su
svc wifi enable

включит его и

su
svc wifi disable

выключу его.

Chahk
источник
Спасибо за ответ. Я попробую то же самое. Не могли бы вы также перечислить то же самое для WiFi?
Клайд Лобо
Отредактировал мой ответ с информацией о WiFi. Я не нашел способ отключить BT с помощью терминальной команды :(
Chahk
6

в android.bluetooth.IBluetoothManager, там несколько параметров

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

ТАК, с рутованным устройством, если вы хотите отключить Bluetooth в режиме супер пользователя adb shell (su)

service call bluetooth_manager 8

если вы хотите снова включить Bluetooth

service call bluetooth_manager 6
Ямы
источник
Я использую устройство HTC One с Android 4.4.2
Jamy
Подтвердите, что это работает на Android 4.2.2
pevik
Service bluetooth_manager does not existна Android 4.1.2
Давиде
3

Включить Bluetooth:
service call bluetooth 3

Отключить Bluetooth:
service call bluetooth 4

user38665
источник
Отрицательный избиратель: не могли бы вы помочь идентифицировать проблему с помощью этого ответа (после редактирования)? Они работали в моем рутированном телефоне после su- так что технически ничего плохого AFAIK.
Нараянан
1
Включить Bluetooth: сервисный вызов Bluetooth 3 Отключить Bluetooth: сервисный вызов Bluetooth 5 работает на моем HTC Desire X
Anvesh Yalamarthy
1
service call bluetooth 5работает в моем Android 4.2.1, чтобы отключить Bluetooth.
Повелитель огня
На "Galaxy Fame GT-6810P", правильные цифры 3 и 5.
Давиде
1

Это работает из оболочки:

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

В основном это вызывает появление диалога, а затем отправляет нажатия клавиш, чтобы принять команду

disneysw
источник
0

Мое решение работает.

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

Обратите внимание, что когда вы выполняете первую команду, она выскакивает из окна и просит вас выбрать ALLOW.

Так что вам нужна команда автоматического нажатия.

Вы можете получить положение X, Y, включив «Параметры разработчика» -> «Расположение указателя», затем нажмите кнопку «Разрешить».

user3759386
источник