您提到的问题非常有用,因为它为通常调用.createRfcommSocketToServiceRecord() 失败的情况提供了一种解决方法。我个人在我现在正在做的一个项目中使用了这个解决方案。我要做的是首先尝试.createRfcommSocketToServiceRecord() 调用,如果失败,我的代码将尝试连接.getClass().getMethod("createRfcommSocket", new Class[]{int.class}); 解决方法。在尝试了许多蓝牙到串行 PCB 之后,其中一些往往有点“尴尬”,而后一种反射方法在.createRfcommSocketToServiceRecord() 不起作用时起作用。
然而...尽管您引用的那个问题确实提供了一段非常有用的紧凑代码,但我认为这不是您开始的最佳起点。你应该开始的地方是Android's Bluetooth documentation,它很好地解释了整个过程,包括如何使用单独的Threads来处理发现、连接等。实际上使用Bluetooth Chat source code很容易上手。使用它,您可以快速启动并运行并连接到蓝牙串行模块。您只需确保将 UUID 更改为串行端口配置文件 (SPP) 所需的值:
private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
希望这足以让一个简单的应用程序与您的蓝牙串行模块通信。蓝牙聊天示例应用程序还为您提供了处理设备发现、配对和所有好东西的对话框,因此您不必像以前那样在设备的 MAC 地址中进行硬编码。
如果您在连接时遇到问题,那么您需要具体说明实际发生的情况;即,你得到了什么异常,等等。