自动通过蓝牙在智能手机和 PC 之间建立连接

Establish a connection between smartphone and PC via Bluetooth automatically

我正在尝试在我的 PC 运行 Ubuntu 和我的 iPhone 之间通过蓝牙自动建立连接,当它可用时,在预先手动配对之后。我已经看到某些外围设备(主要是音频)可以做到这一点。例如,我的 phone 将在蓝牙扬声器打开时自动连接到蓝牙扬声器,并且蓝牙在我的 phone 上处于活动状态;另一个例子是,当我打开汽车时,我的 phone 通过蓝牙自动连接到汽车的无线电系统。

如果没有先从 smartphone 的蓝牙菜单启动连接,我无法将我的 phone 连接到我的 PC。我在想我是否可以为 PC 编写一个应用程序,每隔几分钟或每隔几分钟尝试连接到设备,但似乎 phone 需要成为启动连接的设备。

对于我最终要尝试做的事情,我唯一需要的信息是设备可以成功配对。本质上,我正在尝试在不使用 Wi-Fi 和 GPS 的情况下在我的 phone 和我的 PC 之间构建一种接近触发器 - 由于某些特定原因我无法使用它们。

有什么办法可以做到这一点吗?

是的,只要您对 iOS 应用程序使用 Background Processing 功能,这应该是可行的。在我将在下面给出的示例中,我们将 PC 作为外围设备,phone 作为中央设备,但您实际上可以让它以任何一种方式工作。您将需要执行以下操作:-

  • 第一次初始连接需要在前台执行(这是由于 iOS 的后台限制)。
  • 在 iOS 方面,您需要一个应用程序充当扫描并连接到移除设备的中心(检查 this example 作为起点)。
  • 连接后,需要绑定PC。绑定很重要,因为它可以防止您将来再次进行配对。但是,pairing/bonding 由 iPhone 的 OS 管理,因此您不能将其写入您的应用程序,因此解决方法是在 PC 端具有加密特性,这将强制 iPhone 绑定(稍后介绍)。
  • 在PC端,你需要有一个BlueZ脚本,作为一个一直在做广告的外设。您可以使用 bluetoothctl 执行此操作(查看示例 here and here)。
  • 在开始投放广告之前,您需要在PC端有一个GATT服务器(为此,勾选this example)。
  • 注册特征时,确保其中之一具有加密读取 属性(您可以找到完整的属性列表 here)。
  • 现在,当您尝试从 iOS 端读取此特性时,两个设备应该绑定(确保您的 PC 是可绑定的,您可以通过 执行此操作)。
  • 设备配对后,您的 iOS 应用程序需要在后台运行,不断扫描并尝试连接到相同的外围设备(查看 this and this example)。

您可以在以下链接中找到更多有用的信息:-