我需要停用Bluetooth
并再次启用它。我以这种方式禁用它:
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (mBluetoothAdapter.isEnabled()) {
mBluetoothAdapter.disable();
}
但是我不能以这种方式再次启用它(运行此代码后没有任何反应):
mBluetoothAdapter.enable();
为什么?
答案 0 :(得分:3)
由于这涉及到修补实际硬件,我认为你必须等待一段时间才能启用它。在启用...之前,您可以尝试使用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.
}
所以用语言:较小的延迟,但重试一次,并检查它是否已被禁用。
答案 1 :(得分:0)
如果您通过蓝牙套接字传输数据,则会发生这种情况。一个插座 - 使用1个端口。您可以启用\禁用蓝牙,而不会填充所有套接字端口(大约30个)。所以一个问题 - 如何解决这个问题,所以答案 - 跟踪关闭\打开套接字。可能有帮助。