Mam aplikację z przyciskiem, której używam do włączania i wyłączania BT. Mam tam następujący kod;Wykrywanie zmian stanu dokonanych w adapterze Bluetooth?
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();
}
}
Dzwonię przycisk Flip, który odwraca stan BT, a następnie wywołuje ButtonText, który powinien zaktualizować interfejs użytkownika. Jednak problem, który mam, trwa kilka sekund, zanim BT się włączy - i przez te sekundy stan BT nie jest włączony, co powoduje, że mój przycisk mówi, że Bluetooth jest wyłączony, nawet jeśli zostanie włączony w ciągu 2 sekund.
Znalazłem stałą STATE_CONNECTING
w dokumentacji Android BluetoothAdapter, ale ... Po prostu nie wiem jak z niej korzystać, będąc początkującym i wszystkim.
Tak, mam dwa pytania:
- Czy istnieje sposób dynamicznie powiązać element UI (takie jak przycisk lub obrazek) do stanu BT, tak, że kiedy zmienia się stan BT, przycisk również się zmieni?
- W przeciwnym razie chciałbym nacisnąć przycisk i uzyskać poprawny stan (chciałbym, aby BT powiedziało, nawet jeśli jest to tylko połączenie, ponieważ będzie włączone za 2 sekundy). Jak mam to zrobic?
nie można użyć logiczną i ustawić go na true raz BT zaczyna włączeniu, a następnie sprawdzić stan logiczny, aby zmienić przycisk? –
Zobacz kod AOSP, aby dowiedzieć się, jak śledzą zmiany włączania i wyłączania bluetooth: http://androidxref.com/5.1.0_r1/xref/frameworks/base/services/core/java/com/ android/server/BluetoothManagerService.java –