У меня рутированная Galaxy S 2 (I9100), и мне было интересно, могу ли я перезапустить Bluetooth на моем телефоне через клиент терминала на моем телефоне.
У меня рутированная Galaxy S 2 (I9100), и мне было интересно, могу ли я перезапустить Bluetooth на моем телефоне через клиент терминала на моем телефоне.
Ответы:
Следующая команда терминала должна включить 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
выключу его.
в 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
Service bluetooth_manager does not exist
на Android 4.1.2
Включить Bluetooth:
service call bluetooth 3
Отключить Bluetooth:
service call bluetooth 4
su
- так что технически ничего плохого AFAIK.
service call bluetooth 5
работает в моем Android 4.2.1, чтобы отключить Bluetooth.
Мое решение работает.
am start -a android.bluetooth.adapter.action.REQUEST_ENABLE
sleep 1
input tap 872 1072
Обратите внимание, что когда вы выполняете первую команду, она выскакивает из окна и просит вас выбрать ALLOW.
Так что вам нужна команда автоматического нажатия.
Вы можете получить положение X, Y, включив «Параметры разработчика» -> «Расположение указателя», затем нажмите кнопку «Разрешить».