反射createRfcommSocket的问题



这很奇怪。我正在尝试在Droid X Android 2.3.4上设置蓝牙SPP。我在尝试打开rfcomm套接字时包含了一些不同的方法,其中一个是反射(需要支持某些电话)

然而,在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);

这在第一次执行时正常工作。但是如果我关闭我的程序,然后因为某种原因重新打开它反射方法就会找到这个方法,尝试连接没有任何错误,但它实际上并没有连接。

如果我关闭应用程序,电源循环手机上的蓝牙适配器,并再次尝试它将正常工作。

我不知道发生了什么事,所以任何帮助都将非常感谢。

嗯,我想出了一个创可贴式的修复,我不满意,但会工作,直到我能找到根本原因或更好的解决方案。我只是创建了一个共享首选项对象,其中包含要尝试的方法的"级别"。

级别标记为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
}

相关内容

  • 没有找到相关文章

最新更新