Android 蓝牙 LE 外设 IP 是静态的吗?

Posted

技术标签:

【中文标题】Android 蓝牙 LE 外设 IP 是静态的吗?【英文标题】:Is an Android Bluetooth LE Peripheral IP static? 【发布时间】:2014-09-04 14:15:55 【问题描述】:

我正在将一个使用Bluetooth LE 的iPhone 应用程序移植到android。 在 iPhone 应用程序中,我扫描自定义蓝牙外围设备并将其设备 UUID 编号存储为字符串。这允许我稍后在再次连接设备时进行比较。

BluetoothDevice.ACTION_UUID 据说可以用于读取 Android 中的外围设备 UUID,但我不确定如何在设备连接时使用它来获取 UUID。请问有人可以帮忙吗?

此外,在调用getAddress() 时,Android 确实为我提供了外围设备的 IP 地址。我假设这个 IP 地址是由 Android 设备在首次发现外围设备时随机创建的。

这些 IP 是否是静态的,因为我可以依靠它们在我的应用程序未来启动期间识别每个蓝牙外围设备? 或者他们/他们会随着时间而改变,即。设备重启后等..

谢谢

【问题讨论】:

你看过BluetoothDevice#ACTION_UUID吗? 那是广播一个 UUID。我想从外围设备中读取它。 也许这个link 可能会有所帮助。 谢谢,我已经遵循了,但它没有显示如何获取外围设备 UUID。在 ios 上,这在连接后立即可用,无需先阅读所有 GATT 配置文件。我还想要一个关于提供给 BT 设备的 IP 可靠性的答案。谢谢 【参考方案1】:

忘记那个 UUID。为了在未来的连接中识别外围设备,您应该使用外围设备的蓝牙地址。 BluetoothDevice 类具有 getAddress() 方法,该方法完全返回。

然后,在 LeScanCallback 中,再次检查该地址(字符串相等)。

【讨论】:

谢谢。 getAddress() 返回的内容正是我在抱歉的问题中所指的内容。蓝牙外设没有这样的地址,它们有一个UUID,所以Android基本上把这个地址分配给外设。对于分配给它的设备上的这个外围设备,这个地址是否总是相同的?我知道 iOS 有经常更改外围设备分配的 IP 地址的习惯,但使用 UUID 总是一样的。谢谢 @Darren iOS(也许还有 Android)所做的是出于明显的安全原因每隔一段时间(我相信 15 分钟)更改自己的地址。外围设备的地址通常是静态的,所以不要指望它会改变。此外,getAddress() 返回在广告数据包中传输的外围设备的静态地址。它不是手机分配的ID。 优秀。这就是我需要知道的。所以我可以存储地址并在未来的连接上进行比较。谢谢。

以上是关于Android 蓝牙 LE 外设 IP 是静态的吗?的主要内容,如果未能解决你的问题,请参考以下文章

android蓝牙BLE(三) —— 广播

Android蓝牙BLE我可以修改哪些连接的配置参数

适用于Android的蓝牙低功耗(BLE)外设应用程序

android 蓝牙数据分包_Android 蓝牙广播数据包分析

如何更新蓝牙设备的periphera.name?

如何使用 BLE OBDII 外设