我正在开发一个使用蓝牙连接到设备并发送/接收数据的应用程序。我正在使用 Nexus One 手机进行所有测试。
我从未能够建立从我的手机到任何设备的 SPP(串行端口)连接。但是,我have能够使用相当于 PuTTY 的 Mac 从设备(我的笔记本电脑)连接到我的手机(唯一的例外是 Marketplace 中的“蓝牙文件传输”应用程序似乎可以工作,但我不认为它使用 RFCOM /SPP...)。
我不断在 LogCat 日志中看到此消息:
ERROR/BluetoothService.cpp(78): stopDiscoveryNative: D-Bus error in StopDiscovery: org.bluez.Error.Failed (Invalid discovery session)
以及这些:
java.io.IOException: Operation Canceled
java.io.IOException: Software caused connection abort
我尝试过使用“00001101-0000-1000-8000-00805F9B34FB”的UUID,并且我也尝试过使用:
Method m = device.getClass().getMethod("createRfcommSocket", new Class[] { int.class });
sock = (BluetoothSocket) m.invoke(device, Integer.valueOf(1));
方法而不是device.createRfcommSocketToServiceRecord(UUID);
同样——但运气不佳。
我正在使用蓝牙聊天示例以及该代码的变体来完成我的所有测试......
解决方案或建议会很棒...或者甚至是我可以在手机上运行的一些测试代码的更好/不太复杂的示例,或者 python 脚本或我可以在计算机上运行以帮助调试的东西?
谢谢!我希望这不是 Android 操作系统的错误,但如果是的话,我希望找到解决方法。
编辑:我还应该注意到,大多数设备在蓝牙设置中显示为“已配对,但未连接”。
编辑2:解决方案似乎只是禁用任何蓝牙监听。请参阅我的回答帖子以获取更多信息。