Solución:
El siguiente comando de terminal debe habilitar Bluetooth a través de adb shell o la aplicación Terminal Emulator:
su
am start -a android.bluetooth.adapter.action.REQUEST_ENABLE
En la mayoría de las versiones de Android, este comando presentará una ventana emergente al usuario que le pedirá que confirme la solicitud para habilitar BT. Creo que esto se hizo por motivos de seguridad siempre que una aplicación que no es del sistema cambia BT.
Desafortunadamente, no he encontrado una manera de deshabilitar BT a través de un comando de shell.
Con WiFi es mucho más fácil y no solicita permiso al usuario:
su
svc wifi enable
lo encenderá, y
su
svc wifi disable
lo apagará.
en android.bluetooth.IBluetoothManager, hay algunos parámetros
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
Entonces, con el dispositivo rooteado, si desea desactivar el bluetooth en el modo de superusuario de adb shell (su)
service call bluetooth_manager 8
si quieres volver a encender bluetooth
service call bluetooth_manager 6
Habilitar bluetooth:
service call bluetooth 3
Desactivar bluetooth:
service call bluetooth 4