这很奇怪。我正在尝试在Droid X Android 2.3.4上设置蓝牙SPP。我尝试打开一个rfcomm Socket包含了一些不同的方法,一个是反射(需要支持某些手机)
然而,随着Droid X的发生,一件奇怪的事情发生了。当我第一次连接到蓝牙设备时,我的应用程序会打开并首先尝试SPP:
Method m = mmDevice.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
mmSocket = (BluetoothSocket) m.invoke(mmDevice, Integer.valueOf(1));
如果找不到方法,则尝试正常
mmSocket = mmDevice.createRfcommSocketToServiceRecord(SerialPortServiceClass_UUID);
这是第一次正常工作。但是如果我关闭我的程序,然后由于某种原因重新打开它,然后反射方法实际上找到了方法,尝试连接没有任何错误,但它实际上没有连接。
如果我关闭应用程序,请重新启动手机上的蓝牙适配器并再次尝试它将正常工作。
我对所发生的事情感到茫然,所以任何帮助都会受到高度赞赏。
答案 0 :(得分:0)
我想出了一个我不满意的绑带式修复,但是一直工作直到找到根本原因或更好的解决方案。我只是创建一个共享首选项对象,其中包含要尝试的方法的“级别”。
级别标记为1-4,如果级别设置为数字< =当前级别,则如果尚未建立连接,则将尝试该方法。
if(level<=1){
success set level = 1
fail set level = 0
}
if(level<=2){
success set level = 2
fail set level = 0
}
...
if(level<=4){
success set level = 4
fail set level = 0
}