【问题标题】:Android Bluetooth Cross Platform InteroperabilityAndroid 蓝牙跨平台互操作性
【发布时间】:2010-02-15 19:23:13
【问题描述】:
我有一个蓝牙服务,我在 Windows 机器上为 .Net 编程,我希望我的 Android 2.1 手机能够连接到它。服务器正在侦听 Android 用于连接的相同 UUID。但是连接失败了。
当我尝试连接到未侦听该 UUID 的设备时,我收到一条异常消息“服务发现失败”,但当我尝试连接到正在侦听正确 UUID 的服务器时,会出现一个消息框弹出说:
“与蓝牙设备配对时出现问题。”
我收到一条异常消息“连接超时”。所以看起来服务器和 Android 正在通信,但在握手过程中出现了某种故障。我知道Android要求服务器与手机配对,并加密通信通道。有谁知道使用哪些规范来做到这一点?我想让我的服务器正确响应连接尝试。
谢谢!
【问题讨论】:
标签:
android
cross-platform
bluetooth
【解决方案1】:
我知道出了什么问题。问题是您必须在尝试建立连接之前将远程设备与 Android 配对,因为配对对话框并不总是有效。我不确定这个错误是在 Android 端还是在另一台设备端,但我从来没有看到询问身份验证代码或在任一设备上显示身份验证代码的对话框。所以看起来存在一些兼容性问题。但是,如果您事先明确配对设备,则连接正常。
【解决方案2】:
你是对的。尝试使用 BluetoothChat 示例程序连接到 RS232 设备时,我在这里遇到了同样的问题。
1- 如果没有绑定,我会连续遇到两个错误:
03-03 13:38:20.020: ERROR/BluetoothService.cpp(2077): stopDiscoveryNative: D-Bus error in StopDiscovery: org.bluez.Error.Failed (Invalid discovery session) // Probably because we're calling cancelDiscovery() as a "security" (it's already been cancelled at some point beforehand)
03-03 13:38:20.040: ERROR/BluetoothEventLoop.cpp(2077): onCreateDeviceResult: D-Bus error: org.bluez.Error.AlreadyExists (Device already exists) // This I don't understand
2- 通过蓝牙设置绑定后,没问题。连接完美,程序正常工作。
我尝试自己查看 Android 源代码,但鉴于我是新手,这有点困难。如果有经验的人能解决,那就太好了。
【解决方案3】:
回答 Tomas - SPP(串行端口配置文件)配置文件在几个 HTC Android 型号上被破坏,甚至是 2.1 版本,但在型号之间并不一致。
HTC Desire - 不起作用。
HTC Legend - 不好,但可以使用一段时间?
带有自定义 ROM 的 HTC Hero - 在同时播放声音时,有些效果很好,有些根本不行,有些效果很差。
【解决方案4】:
前面所有的答案都在标记上;本质上,在连接之前需要配对。
但是,即使在配对后我也收到了错误消息。 (我第一次尝试在不配对的情况下连接)。
解决方法是重启手机一次。现在它可以很好地连接到配对的设备了。听起来很简单,但我花了很多时间调试它。希望对那里的人有用。