无需连接设备的 Ble 扫描服务
Ble Scan service of a device without connecting to it
我想用 BLE 扫描一些设备。
我只想展示我的设备,所以我知道我知道设备的名称,如果它是好的,我会把它放在我的列表中。
if (device.getName().contains(DEVICE_NAME)) {
mDevices.put(device.hashCode(), device);
invalidateOptionsMenu();
}
我的问题是,如果我更改我的设备名称,此检查将是错误的。
因此,我看看是否有可能获得我添加的某些服务的一些 uuid,以使用不会更改的内容进行检查。
唯一的方法是通过
device.connectGatt(this, false, mGattCallback);
连接到设备,然后通过关贸总协定发现服务,但是,是否可以在不连接的情况下从设备发现某些服务?
我没有 android 背景,但我了解 BLE 的工作原理。
看看所有标准GATT characteristics here and all the standard GATT services here。
特征设备名称(UUID 为 0x2A00)捆绑到通用访问服务(UUID 为 0x1800)中。
GAP 始终在来自 GATT 服务器的广告包中广播。
GATT 客户端应该 运行 发现扫描以接收通告并解析通告数据包以接收 GAP 描述符。当您这样做时,从技术上讲,连接尚未建立。
地址:
If I change the name of my device this check will be false, So I look if it was possible to get some uuid of some services that I add to do the check with something that would not change.
假设您希望您的应用仅连接到一组具有某些唯一标识的特定设备。举例来说,您配置的支持 BLE 的数字笔应该只能连接到您的应用程序,其他设备小工具不能连接到您的应用程序。如果是这种情况,并且您可以自由地在 BLE 设备上配置 GATT 服务器,那么您可以在 GATT 服务器上的 GAP 服务中添加一些自定义特性,这些特性对于这些设备来说是独一无二的。不用说,您必须为该特征生成一个 128 位自定义 UUID,并且您的应用程序也知道该 UUID。这更像是一种变通解决方案。
看看scan filter in android。
它允许您通过服务 UUID 进行扫描,该 UUID 需要通过 BLE 外设通过广告发送。我没有研究过 android,但我确信 ScanFilter
将允许您按 16 位或 128 位 UUID 进行过滤。
我想用 BLE 扫描一些设备。 我只想展示我的设备,所以我知道我知道设备的名称,如果它是好的,我会把它放在我的列表中。
if (device.getName().contains(DEVICE_NAME)) {
mDevices.put(device.hashCode(), device);
invalidateOptionsMenu();
}
我的问题是,如果我更改我的设备名称,此检查将是错误的。
因此,我看看是否有可能获得我添加的某些服务的一些 uuid,以使用不会更改的内容进行检查。
唯一的方法是通过
device.connectGatt(this, false, mGattCallback);
连接到设备,然后通过关贸总协定发现服务,但是,是否可以在不连接的情况下从设备发现某些服务?
我没有 android 背景,但我了解 BLE 的工作原理。
看看所有标准GATT characteristics here and all the standard GATT services here。
特征设备名称(UUID 为 0x2A00)捆绑到通用访问服务(UUID 为 0x1800)中。
GAP 始终在来自 GATT 服务器的广告包中广播。
GATT 客户端应该 运行 发现扫描以接收通告并解析通告数据包以接收 GAP 描述符。当您这样做时,从技术上讲,连接尚未建立。
地址:
If I change the name of my device this check will be false, So I look if it was possible to get some uuid of some services that I add to do the check with something that would not change.
假设您希望您的应用仅连接到一组具有某些唯一标识的特定设备。举例来说,您配置的支持 BLE 的数字笔应该只能连接到您的应用程序,其他设备小工具不能连接到您的应用程序。如果是这种情况,并且您可以自由地在 BLE 设备上配置 GATT 服务器,那么您可以在 GATT 服务器上的 GAP 服务中添加一些自定义特性,这些特性对于这些设备来说是独一无二的。不用说,您必须为该特征生成一个 128 位自定义 UUID,并且您的应用程序也知道该 UUID。这更像是一种变通解决方案。
看看scan filter in android。
它允许您通过服务 UUID 进行扫描,该 UUID 需要通过 BLE 外设通过广告发送。我没有研究过 android,但我确信 ScanFilter
将允许您按 16 位或 128 位 UUID 进行过滤。