Java 禁用后如何再次启用蓝牙?
我需要禁用Java 禁用后如何再次启用蓝牙?,java,android,android-bluetooth,Java,Android,Android Bluetooth,我需要禁用蓝牙,然后再次启用它。我以这种方式禁用该功能: BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (mBluetoothAdapter.isEnabled()) { mBluetoothAdapter.disable(); } 但我无法以这种方式再次启用该功能(运行此代码后不会发生任何事情): 为什么?由于这涉及到对实际硬件的修补,我认为您必须等待一段时间才能启用它。在
蓝牙
,然后再次启用它。我以这种方式禁用该功能:
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (mBluetoothAdapter.isEnabled()) {
mBluetoothAdapter.disable();
}
但我无法以这种方式再次启用该功能(运行此代码后不会发生任何事情):
为什么?由于这涉及到对实际硬件的修补,我认为您必须等待一段时间才能启用它。在启用之前,您可以尝试使用
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.
}
int重试=0;
while(重试+++如果您通过蓝牙套接字传输数据,则会发生这种情况。一个套接字-使用一个端口。您可以在所有套接字端口(大约30个)启用/禁用蓝牙未填充。因此,一个问题-如何解决此问题,一个答案-跟踪关闭/打开的套接字。可能会有帮助。由于这涉及到修补实际硬件,我认为您必须等待一段时间才能启用它。您可以尝试使用Thread.sleep(500)查看
或1000
在启用…或cleaner之前:检查它是否被禁用,是否可以启用。为什么这个问题在问题中获得了接近票数的投票要求代码的问题必须表明对正在解决的问题的最低理解。包括尝试的解决方案、为什么不起作用以及预期的结果。
?这是这个问题似乎在各个方面都很合适,甚至有代码,试图解决…还有,为什么投否决票?谢谢老兄!解决了这个问题,在我的设备(HTC Desire HD)上启用之前大约需要4秒钟哇,4秒真是太长了,我想即使是500毫秒也太快了。很高兴知道这需要这么长的时间…一定要用第二种方法,不同的设备会有不同的性能。。。
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.
}