gpt4 book ai didi

java - createRfcommSocket 的反射问题

转载 作者:行者123 更新时间:2023-11-29 09:18:54 24 4
gpt4 key购买 nike

这很奇怪。我正在尝试在 Droid X And​​roid 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
}

关于java - createRfcommSocket 的反射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7755068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com