У меня есть приложение с кнопкой на нем, которое я использую для включения и выключения BT. У меня есть следующий код;Обнаружение изменений состояния, внесенных в адаптер 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();
}
}
Я звоню кнопку Flip, который переворачивает состояние BT, а затем вызывает ButtonText, которые должны обновить пользовательский интерфейс. Тем не менее, проблема, с которой я столкнулся, - это займет несколько секунд, пока BT не включится - и в течение этих секунд статус BT не включен, поэтому моя кнопка говорит о отключении Bluetooth, даже если он будет включен через 2 секунды.
Я нашел константу STATE_CONNECTING
в документации по Android-адаптеру BluetoothAdapter, но ... Я просто не знаю, как ее использовать, будучи новичком и всеми.
Итак, у меня есть два вопроса:
- Есть ли способ, чтобы динамически связать элемент пользовательского интерфейса (например, кнопки или изображения) в состояние BT, так что, когда изменения состояния BT, кнопка также изменится?
- В противном случае я бы хотел нажать кнопку и получить правильное состояние (я бы хотел, чтобы он сказал BT, даже если это только соединение, так как оно будет включено через 2 секунды). Как мне это сделать?
вы не можете использовать логическое значение и установить его на истинный раз BT начинает включения, а затем проверить логическое состояние, чтобы изменить кнопка? –
Посмотрите на этот код AOSP, чтобы понять, как они отслеживают изменения вкл/выкл Bluetooth: http://androidxref.com/5.1.0_r1/xref/frameworks/base/services/core/java/com/ android/server/BluetoothManagerService.java –