在 Android 中手动配对蓝牙设备?

Posted

技术标签:

【中文标题】在 Android 中手动配对蓝牙设备?【英文标题】:Manually pairing Bluetooth Decives in Android? 【发布时间】:2011-12-15 13:39:36 【问题描述】:

我在读这个 http://developer.android.com/guide/topics/wireless/bluetooth.html#QueryingPairedDevices

这是关于如何配对、连接蓝牙设备的帮助。

我有几个 BT 设备始终处于非发现模式。我知道这些设备的 MAC 和 PIN。 Android Dev 中是否有办法手动将设备添加到 PAIRED 列表中,这样我就可以将连接用作客户端。 我了解此手册是为 V3 编写的。我想我需要在 2.0 上执行此操作; 2.1- 以前有人做过吗?

基本上,我要连接的这些设备是节电模块,我使用预先构建的 BT 模块来监测日光、另一个湿度等。每 3 小时或在中断时,单个电池运行数月。因此,关闭服务器上的 divcory 可以节省大量电量并防止其他人尝试连接并浪费电池。

【问题讨论】:

【参考方案1】:

不确定您所说的“手动”是什么意思:您是指 GUI/用户交互中的“手动”,还是“我在自己的应用程序代码中执行”?

一些建议:

如果您可以让您的 BT 设备完全可被发现,您可以这样做:

    让您的 BT 设备可被发现 让Android搜索并找到设备,然后发起连接 Android 将要求输入 PIN 码以与设备配对;输入 PIN 码。 配对成功后,Android 会存储配对信息以备将来使用,以便您可以 让您的 BT 设备再次隐形。

从那时起,您的应用应该能够随时连接到 BT 设备,而无需进一步的配对操作。

如果说这不是你的选择,也许你想走另一条路:

在当前的 Android 版本中,实现了不同的 API 例程,这些例程既没有记录也没有在普通 SDK 中公开。一种 hack 类型的解决方案可能是通过反射或通过修改您的 SDK 安装来使用其中一些“隐藏”(“@hide”...)API。

但请注意,这始终是一种hack,它可能在具有特定 Android 版本的特定设备上运行,并且可能会在另一台设备和/或任何其他 Android 版本上破坏您的应用.

话虽如此,这里有一些参考:

Example of how to access "hidden" bluetooth API.

然后,查看 android.bluetooth.BluetoothDevice 的源代码,例如here.

在那里,public boolean createBond()... 可以为所欲为。

【讨论】:

以上是关于在 Android 中手动配对蓝牙设备?的主要内容,如果未能解决你的问题,请参考以下文章

从 Android 中配对的蓝牙设备读取数据

Android蓝牙协议-蓝牙配对与连接

Android 低功耗蓝牙 - 如何访问之前配对的设备?

手机蓝牙怎样配对

Android 蓝牙应用启动器

Android 配对蓝牙设备不显示应用配置文件