12

我正在尝试通过蓝牙连接两个未配对的 android 设备以实现 P2P 网络目的。不需要中间人保护。Android 有createInsecureRfcommSocketToServiceRecordandlistenUsingInsecureRfcommWithServiceRecord为此(从 API 级别 10 开始),它可以在现代设备上完美运行。但是,在 Galaxy Ace(Android 2.3.3 = API 级别 10,与 Galaxy Nexus 连接)上,它会创建一个配对对话框。这发生在传入和传出连接上。(更新:将 Galaxy Ace 更新到 Android 2.3.6 显然可以解决问题。是否有特定的 Android 版本总是/从不这样做?)

接受配对后,连接工作。出于这个原因,我认为这与问题 40101 无关:createInsecureRfcommSocketToServiceRecord 导致 Android 4.2 上的配对对话框只有在服务记录不存在时才会发生。

我认为在出现此对话框的设备上无法避免此对话框(如果可以,解释如何执行此操作是一个有效的答案)。出于这个原因,我想知道什么时候会出现这样的对话框。我在 Android Java 源代码中没有找到任何东西(它很快就变成了原生的)。我怀疑它与蓝牙版本有什么关系,因为 Ace 有蓝牙 2.1,它应该支持所需的“正常工作”连接。

如果有什么可以让我在不弹出对话框的情况下检测设备是否支持连接,或者它是否明确固定到某个 android 版本,那将极大地帮助我。

另外,我正在寻找一种轻松排除此类设备的方法。

4

1 回答 1

3

目前我和你有同样的问题。我开发了一个应用程序来在 BT 终端之间交换消息,我正在不同的手机(我有 S3、S2、S plus、Nexus One 和 Galaxy Y)上对其进行测试以分析行为。手机具有以下规格:

  • 三星 S2 : 自定义 ROM (Android v4.2.1) - 已植根
  • 三星 S3 : Stock ROM (Android v4.1.2)
  • 三星 S+ : 自定义 ROM (Android v4.1.2) - 植根
  • 三星 GY : 自定义 ROM (Android v2.3.6) - Rooted
  • Nexus One : Stock ROM (Android v2.3.6) - 扎根

根据我的经验,我可以告诉你,S2 和 S3 在一段时间后开始显示配对对话框,即使它们已经配对并交换数据。这种情况一直发生在我将这两款手机中的一款包含在我的测试平台中,其他手机工作正常并且从不要求配对(特别是具有完美行为的 Nexus One)。

我已经进行了长时间的测试(从 4 到 6 小时),但我仍然无法弄清楚为什么这款手机有时会在 3 小时后要求配对……有时会在 10 分钟后。

我想指出的唯一一件事是,即使您使用不安全的连接,您仍然可能会被要求进行人工交互以进行配对。看看那个(取自http://en.wikipedia.org/wiki/Bluetooth):

有效:顾名思义,此方法有效。无需用户交互;但是,设备可能会提示用户确认配对过程。这种方法通常用于 IO 功能非常有限的耳机,并且比固定 PIN 机制更安全,固定 PIN 机制通常用于这组有限设备的传统配对。此方法提供中间人 (MITM) 保护。

于 2013-05-13T09:37:53.963 回答