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

问题描述:

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

BluetoothDevice.ACTION_UUID可以用来读取Android中的外设UUID,但我不知道如何使用它来获取设备连接时的UUID。任何人都可以帮忙吗?

此外,拨打getAddress()时,Android的确给了我看起来像外设的IP地址。我假设这个IP地址是在首次发现外设时由Android设备随机创建的。

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

谢谢

+0

你看过[BluetoothDevice#ACTION_UUID](http://developer.android.com/reference/android/bluetooth/BluetoothDevice.html#ACTION_UUID)吗? – ChuongPham 2014-09-04 14:33:40

+0

这就是广播一个UUID。我想从外设读取它。 – Darren 2014-09-04 15:08:14

+0

也许这[link](https://developer.android.com/guide/topics/connectivity/bluetooth-le.html)可能会有所帮助。 – ChuongPham 2014-09-04 15:22:49

忘记UUID。你应该使用什么来代替未来连接中的外设是外设的蓝牙地址。类BluetoothDevice的方法getAddress()正好返回。

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

+0

谢谢。什么'getAddress()'返回正是我所指的在我的问题抱歉。蓝牙外设没有这样的地址,他们有一个UUID,所以Android基本上把这个地址分配给外设。这个地址在分配的设备上的外设是否一样?我知道iOS有一个频繁更改外设的分配IP地址的习惯,但使用UUID始终是相同的。谢谢 – Darren 2014-09-08 09:55:14

+1

@Darren出于明显的安全原因,iOS(也可能是Android)为了每隔一段时间(我相信15分钟)更改**自己的地址**。虽然外设的地址通常是** static **,所以不要指望它改变。另外,'getAddress()'返回在广告数据包中传输的外设的静态地址。它是**不是**手机分配的ID。 – 2014-09-08 10:47:59

+0

非常好。这就是我需要知道的。因此,我可以存储地址并在将来的连接上进行比较。谢谢。 – Darren 2014-09-08 11:16:10