ido*_*ize 6 java uuid android serial-port bluetooth
我正在开发一个使用蓝牙连接到设备并发送/接收数据的应用程序.我正在使用Nexus One手机进行所有测试.
我从来没有能够建立从手机到任何设备的SPP(串行端口)连接.不过,我已经能够从一个设备(我的笔记本电脑)连接到使用Mac相当于腻子我的手机(唯一的例外是"蓝牙文件传输"从Marketplace应用似乎工作,但我不认为使用RFCOM/SPP ......).
我一直在LogCat日志中看到这条消息:
ERROR/BluetoothService.cpp(78): stopDiscoveryNative: D-Bus error in StopDiscovery: org.bluez.Error.Failed (Invalid discovery session)
Run Code Online (Sandbox Code Playgroud)
以及这些:
java.io.IOException: Operation Canceled
java.io.IOException: Software caused connection abort
Run Code Online (Sandbox Code Playgroud)
我尝试使用UUID"00001101-0000-1000-8000-00805F9B34FB",我也试过使用:
Method m = device.getClass().getMethod("createRfcommSocket", new Class[] { int.class });
sock = (BluetoothSocket) m.invoke(device, Integer.valueOf(1));
Run Code Online (Sandbox Code Playgroud)
方法而不是device.createRfcommSocketToServiceRecord(UUID);- 没有运气.
我正在使用BluetoothChat示例和该代码的变体来完成我的所有测试......
解决方案或建议会很棒...或者甚至是我可以在手机上运行的一些测试代码的更好/更简单的例子,或者是我可以在我的计算机上运行以帮助调试的python脚本?
谢谢!我希望这不是Android操作系统的错误,但如果是,我希望找到一个解决方法.
编辑:我还应该注意,大多数设备在蓝牙设置中显示为"已配对但未连接".
编辑2:解决方案似乎只是禁用任何蓝牙监听.有关更多信息,请参阅我的回答帖
事实证明,解决方案是禁用蓝牙服务的服务器功能.通过仅使用createRfcommSocketToServiceRecord和从不调用listenUsingRfcommWithServiceRecord(在蓝牙示例中,这意味着永远不会启动"AcceptThread")问题得到解决.
虽然这两个调用应该是完全分开的,并且彼此之间没有任何影响(根据Android文档),但只是注释掉listenUsingRfcommWithServiceRecord修复我所谓的无关问题.
我可以使用未编辑的蓝牙聊天程序,它将无法与我测试的任何蓝牙设备(笔记本电脑,台式机,耳机等)建立传出连接,但如果我删除那一件事它作为客户端完美无瑕地工作.
无论如何,我希望如果他们遇到同样的问题,这将有助于其他人.这必须是Android操作系统的错误,或者可能是Nexus One上的固件.
| 归档时间: |
|
| 查看次数: |
16813 次 |
| 最近记录: |