Ho un'app con un pulsante che uso per attivare e disattivare BT. Ho il seguente codice in là;Rilevamento delle modifiche di stato apportate a 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();
}
}
sto chiamando pulsante Flip, che ribalta lo stato BT, e quindi chiama ButtonText, che dovrebbe aggiornare l'interfaccia utente. Tuttavia, il problema che sto riscontrando è che occorrono alcuni secondi affinché BT si accenda, e durante questi secondi, lo stato BT non è abilitato, facendo sì che il mio pulsante dica Bluetooth disattivato, anche se sarà acceso in 2 secondi.
Ho trovato la costante STATE_CONNECTING
nella documentazione Android BluetoothAdapter, ma ... Semplicemente non so come usarlo, essendo un principiante e tutto il resto.
Così, ho due domande:
- C'è un modo per legare dinamicamente un elemento dell'interfaccia utente (ad esempio un pulsante o immagine) a uno stato di BT, in modo che quando i cambiamenti di stato BT, anche il pulsante cambierà?
- Altrimenti, vorrei premere il pulsante e ottenere lo stato corretto (vorrei che dicesse BT acceso, anche se è solo in connessione, dato che sarà acceso in 2 secondi). Come faccio a fare questo?
non è possibile utilizzare un valore booleano e impostarlo su true una volta BT inizia a girare su, quindi controllare lo stato booleano per cambiare il pulsante? –
Dai un'occhiata a questo codice AOSP per avere un'idea di come stanno monitorando le modifiche bluetooth on/off: http://androidxref.com/5.1.0_r1/xref/frameworks/base/services/core/java/com/ android/server/BluetoothManagerService.java –