【发布时间】:2010-06-18 20:15:23
【问题描述】:
我正在开发一个应用程序,它使用蓝牙连接到设备并发送/接收数据。我正在使用 Nexus One 手机进行所有测试。
我从来没有能够建立从我的手机到任何设备的 SPP(串行端口)连接。但是,我已经能够使用相当于 PuTTY 的 Mac 从设备(我的笔记本电脑)连接到我的手机(唯一的例外是市场上的“蓝牙文件传输”应用程序似乎工作,但我不认为它使用 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); 以及 - 没有运气。
我正在使用BluetoothChat example 和该代码的变体来完成我的所有测试...
解决方案或建议会很棒...或者甚至是我可以在手机上运行的一些测试代码、python 脚本或我可以在计算机上运行以帮助调试的更好/不太复杂的示例?
谢谢!我希望这不是 Android 操作系统的错误,但如果是,我希望找到解决方法。
编辑:我还应该注意,大多数设备在蓝牙设置中显示为“已配对,但未连接”。
编辑 2:解决方案似乎只是禁用任何蓝牙监听。有关详细信息,请参阅我的回答帖子。
【问题讨论】:
-
您是有意使用反射还是巧合?我问的原因是,我想知道您是否使用它来解决蓝牙实现中的特定错误?通常我会认为可以只使用
BluetoothSocket bs = createRfCommSocket(...。谢谢! -
@Brad - 这是故意的,因为我在网上看到有几个人遇到了 createRfcommSocketToServiceRecord 的问题,这些问题只能通过使用这种不寻常的解决方法来解决。见:stackoverflow.com/questions/2660968/… --and-- stackoverflow.com/questions/2661932/…
标签: java android bluetooth serial-port uuid