我正在开发一款Android应用程序,用于扫描范围内的BLE信标。信标可以是ibeacon或eddystone格式。在发现信标后,我能够获得scancallback并找到UUID,主要号码和次要号码。我需要找到信标的IP地址(类似于微芯片发现应用程序似乎正在做的事情)。我不能使用其他应用程序,因为我的应用程序必须具有更多功能。第一个问题 - 所有BLE设备都获得IP地址吗?第二个问题 - 如何找到检测到的BLE设备的IP地址。我确实搜索了关于这个主题的各种帖子,现在已经搜索了大约4个小时,但我找不到答案。任何人都可以给我一个解决方案或指向我描述解决方案的帖子吗?
答案 0 :(得分:1)
你到底想要解决什么?
蓝牙和低功耗蓝牙是一种与IP(互联网协议)不同的协议。因此,BLE设备没有IP地址,就像IP设备没有蓝牙设备地址一样。
当然,如果您有一个大产品(如电脑),它可以同时拥有WiFi模块和蓝牙模块。
然而,有像https://tools.ietf.org/html/rfc7668这样的IP over BLE的实现。那是你在找什么?我认为没有Beacon设备可以做到这一点,因为它并没有真正匹配用例。
答案 1 :(得分:0)
您可以通过BluetoothDevice.getAddress()
获取BLE设备的硬件地址。
假设您正在使用onLeScan(BluetoothDevice device, int rssi, byte[] scanRecord)
回调扫描结果,并在附近找到BluetoothDevice
。
答案 2 :(得分:0)
iBeacon规范仅定义UUID,主要和次要值。 Eddystone格式添加了一些附加信息(特别是URL和有关设备本身的信息,如电池电量)。
许多信标都有特定于供应商的BLE服务以允许设备配置。供应商也可以为管理添加IP接口,但我建议这些将是少数信标;信标通常是低成本,低功耗的广播设备。
配置BLE服务和IP配置服务都不是iBeacon或Eddystone标准的一部分。如果你有一个带IP接口的信标,那么你需要从信标供应商处获取详细信息。
答案 3 :(得分:0)
Q)第一个问题 - 所有BLE设备都获得IP地址吗?
BLE设备中没有IP地址。
Q)第二个问题 - 如何找到检测到的BLE设备的IP地址。我确实搜索了关于这个主题的各种帖子,现在已经搜索了大约4个小时,但我找不到答案。任何人都可以给我一个解决方案或指向我描述解决方案的帖子吗?
许多信标制造商生产BLE设备,宣传自定义有效负载,因此他们可以发送他们想要的任何信息。
void onLeScan (BluetoothDevice device,
int rssi,
byte[] scanRecord)
您可以在scanRecord
中获取有效负载。如果您的信标正在广播IP地址参数,那么它应该在有效载荷中,但您需要解析它,请求信标制造商帮助您从有效载荷中获取该IP地址参数。