Android蓝牙开发 - 连接到未配对设备

问题描述:

首先,我可以通过蓝牙以编程方式连接到设备,前提是我已手动配对。但是,即使使用未更改的示例Android蓝牙代码,我仍未找到(用户友好的)方式与未配对的设备(显然是可发现的)进行连接。Android蓝牙开发 - 连接到未配对设备

我想弹出配对对话框,要求用户输入设备的密钥。我的代码会发生什么,以及样品Android的蓝牙规范,是使一个套接字发现的蓝牙设备

device.createRfcommSocketToServiceRecord(MY_UUID); 

将通知添加到屏幕顶部通知栏;但是,用户甚至不会注意到新的通知(我知道我没有)。

我该如何弹出配对对话框,提示用户输入密钥 - 或者更好的办法是自动提供特定设备的密钥?

+1

我当然不会希望你的程序,如果你自动连接我到不成对的设备。我希望这样的安全漏洞不存在。 – 2011-01-19 21:29:37

您可以使用BlueCove库来做到这一点。但是,它可能比你想要的要重一点,因为它需要一个本地组件,但作为回报,你可以真正使用手机上的蓝牙。 Tim:我可以看到一个流氓应用程序如何滥用这种机制,但是有些设备根本不支持传统的基于PIN的身份验证方法(例如WiiMote)。

我已经看到了这个几个线程,但还没有真正找到一个好的 答案。

我正在连接我的nexus 1到蓝牙spp服务器设备以读取 并写入数据。

一些实验后,我发现以下

  1. 如果我卸载建立从UI线程 (我会考虑一个好主意)配对对话框的连接(输入引脚)是 不显示 - 而是出现通知项目,用户必须点击以配对设备。

  2. 如果我在UI线程内建立连接,那么 配对对话框将会出现在前台,但显然在等待这个时会有一个小小的丑陋UI暂停。

在任一情况下,以建立连接的请求被用户之前超时 (箱)可以输入与一个IOException服务 发现销失败。

我的理想是配对对话框到达前面(没有 必须阻止我的UI线程),并且在等待配对输入时连接尝试不会 超时。

有没有人想出了一个方法来使这项工作?