Tengo una aplicación con un botón que utilizo para encender y apagar BT. Tengo el siguiente código allí;¿Detecta cambios de estado realizados en BluetoothAdapter?
public void buttonFlip(View view) {
flipBT();
buttonText(view);
}
public void buttonText(View view) {
Button buttonText = (Button) findViewById(R.id.button1);
if (mBluetoothAdapter.isEnabled() || (mBluetoothAdapter.a)) {
buttonText.setText(R.string.bluetooth_on);
} else {
buttonText.setText(R.string.bluetooth_off);
}
}
private void flipBT() {
if (mBluetoothAdapter.isEnabled()) {
mBluetoothAdapter.disable();
} else {
mBluetoothAdapter.enable();
}
}
estoy llamando botón Flip, que voltea el estado de BT, y luego llama ButtonText, que debe actualizar la interfaz de usuario. Sin embargo, el problema que estoy teniendo es que BT tarda unos segundos en encenderse, y durante estos segundos, el estado de BT no está habilitado, lo que hace que mi botón diga que Bluetooth está apagado, incluso si estará encendido en 2 segundos.
Encontré la constante STATE_CONNECTING
en la documentación de Android de BluetoothAdapter, pero ... simplemente no sé cómo usarlo, siendo un novato y todo.
Por lo tanto, tengo dos preguntas:
- ¿Hay una manera de atar dinámicamente un elemento de interfaz de usuario (por ejemplo, un botón o imagen) a un estado de BT, de modo que cuando los cambios de estado de BT, el botón también cambiará?
- De lo contrario, me gustaría presionar el botón y obtener el estado correcto (me gustaría que diga BT encendido, incluso si solo se está conectando, ya que estará encendido en 2 segundos). ¿Cómo hago esto?
no se puede utilizar un valor lógico y la ponemos a true vez BT comienza a encender, a continuación, comprobar el estado booleano para cambiar el ¿botón? –
Eche un vistazo a este código AOSP para tener una idea de cómo están rastreando los cambios de activación/desactivación de bluetooth: http://androidxref.com/5.1.0_r1/xref/frameworks/base/services/core/java/com/ android/server/BluetoothManagerService.java –