好吧,这里是交易。我有两个启用蓝牙的Galaxy Nexus手机。Android蓝牙IOException:连接被拒绝
我写了一个蓝牙连接管理应用程序,用于设备发现和连接。它还输出设备可支持的所有可用UUID。
从http://www.bluetooth.org/Technical/AssignedNumbers/service_discovery.htm查看以下标准UUID是从Galaxy Nexus设备公开的。
- 0x1116 - NAP
- 0x112f - PBAP(电话簿连接配置文件)
- 0x111F的 - HFP(免提)
- 0x1105 - OPP(对象推送模式)
- 0x1112 - HSP(耳机模式)
- 0x110c - AVRCP
- 0x110a - A2DP
我正尝试通过OPP配置文件(UUID 00001105-0000-1000-8000-00805F9B34FB
)连接并在设备之间推送对象(文件)。我已经去了整个Android API documentation如何发现,配对/绑定(线程等)和管理所有的蓝牙连接。我设法通过SPP(0x1101)配置文件成功连接并与传统主板设备通话。
但是,当我尝试在两个星系联网电话之间使用socket.connect()
时,配对对话框出现,并且我在两个设备上单击了Pair
按钮。之后,我立即得到一个Connection Refused IOException
。请注意,在配对发生后,一旦我再也不会再问到问题,因为安全链接已被缓存。
如果我无法使用这些标准UUID连接到这些标准配置文件,为什么它们暴露?如何从我的应用程序连接到这些配置文件中的任何一个并与它们交互?是否因为我的应用程序不是某种可信的?奇怪的是,即使Android上的Share
功能也根本不起作用。这是Android上完全破坏的东西吗?
请避免给我暗示使用“众所周知的UUID SPP一个0x1101”像文档说。这不是我想要的。我对这些东西的工作原理有了很好的理解,并且正在寻找真正的解决方案或问题的解释。
我见过典型的“反射”解决方案,但我不明白为什么这仍然是Android上的问题?为什么人们使用反思来完成这项工作?我们可以在Android上提交一个错误来解决这个问题吗?
如果这些UUID是标准的,那么任何应用程序都应该能够连接并与它们交互。为什么这是一个问题,为什么我会得到这个异常?
在此先感谢。
UPDATE
所以,出于某种原因,在Android系统中的对象推送开始工作。我实际上试图通过我的应用程序连接,它不工作。然后,我去了通讯录应用程序,并试图分享一个神奇的联系人。然后,我回到我的应用程序,现在它的工作原理...哇。这很奇怪,必须有解释。
你设置了正确的权限? http://developer.android.com/guide/topics/connectivity/bluetooth.html#Permissions – Lars
@Lars当然,他做到了。 dnkoutso:你究竟打开了什么插口?你可以尝试重新配对,那就是 - 不配对然后再配对。顺便说一句,它是2层? – nullpotent
@iccthedral,你是什么意思2层?我经常进入两台设备上的真实设置应用并删除配对。一旦我再次调用'socket.connect()',它会提示我配对对话框和填入的密钥号码。不幸的是,在我得到“Connection Refused”IOException后。 – dnkoutso