安卓蓝牙跨平台互操作性

3
我有一个在Windows电脑上用.NET编写的蓝牙服务,我想让我的Android 2.1手机连接到它。服务器正在监听与Android使用相同的UUID以进行连接。但连接失败了。
当我尝试连接未监听那个UUID的设备时,会出现异常,显示“服务发现失败”,但是当我尝试连接监听正确UUID的服务器时,会弹出一个消息框,上面写着:
“无法配对蓝牙设备。”
并且我会得到一个异常,显示“连接超时”。所以看起来服务器和Android正在通信,但在握手期间存在某种故障。我知道Android要求服务器与手机配对,并加密通信通道。有人知道用于实现这一点的规范是什么吗?我很想让我的服务器正确响应连接尝试。
谢谢!
4个回答

1

你说得对。我在尝试使用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源代码,但由于我是新手,有点困难。如果有经验丰富的人能够解决这个问题,那就太好了。


1

我找出了问题所在。问题是在尝试连接之前,您必须将远程设备与Android配对,因为配对对话框并不总是有效。我不确定这个错误是在Android端还是在其他设备端,但我从未在任何设备上看到要求身份验证代码或显示身份验证代码的对话框。因此,看起来存在一些兼容性问题。但是,如果您事先明确地配对设备,则连接可以正常工作。


1
回答Tomas - SPP(串口配置文件)配置文件在几个HTC Android型号上存在问题,即使是2.1版本,但在不同的型号之间并不一致。
HTC Desire - 不起作用。 HTC Legend - 不好,但有一段时间可以工作? 带有自定义ROM的HTC Hero - 有些工作得很好,有些根本不工作,有些在同时进行声音时表现不佳。

0

所有之前的答案都是正确的;基本上,在连接之前需要进行配对。

然而,即使在配对后我仍然遇到了错误。(我最初尝试在未配对的情况下连接)。

解决方法是重新启动手机一次。现在它能够很好地连接到已配对的设备。听起来很简单,但我花了相当长的时间来调试它。希望对某个人有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接