由于这涉及修补实际硬件,我认为您必须稍等片刻才能启用它。您可以尝试启用Thread.sleep(500)
或1000
启用之前查看...
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (mBluetoothAdapter.isEnabled()) {
mBluetoothAdapter.disable();
Thread.sleep(500); //code for dealing with InterruptedException not shown
mBluetoothAdapter.enable();
}
然而,这是不稳定的,用幻数解决与硬件设备事件相关的问题并不好。不保证在所有情况下(不同设备、不同情况等)都有明确定义的行为
如果适配器仅在完全禁用时才报告禁用状态,您可以尝试以下方式:
int retry=0;
while(retry++<5) {
if (!mBluetoothAdapter.isEnabled()) {
mBluetoothAdapter.enable();
}
Thread.sleep(100); //again, InterruptedException handling not shown
}
if(retry==5) {
//Ooops, still not successful. Handle situation here.
}
换句话说:延迟更小,但重试几次,并检查它是否已被禁用。