当前位置: 首页 > 知识库问答 >
问题:

AndroidBLE扫描与UUID过滤器列表混乱

东郭淇
2023-03-14

我正在Android(移动设备a)上执行UUID过滤扫描,我有两个测试用例。

一个人在另一个Android设备(移动设备b)上使用一个名为BLE扫描仪的应用程序来创建一个具有两个测试服务的BLE服务器(每个服务都有自己唯一的UUID)。另一种是通过Arduino BLE服务器,为其服务定制UUID。

如果我使用移动设备B的BLE扫描仪应用程序并扫描arduino,我可以找到它,连接到它并查看服务以及每个服务UUID。它具有通用属性、通用访问和自定义服务(我设置的服务)。那太好了。

如果我使用移动设备A并使用三种服务(通用属性UUID、通用访问UUID和自定义服务UUID)执行BLE过滤扫描,则Arduino根本不会出现在扫描中。

如果我使用移动设备A并使用通过移动设备B上的BLE扫描仪应用程序创建的测试服务器的UUID执行BLE过滤扫描,则移动设备B的BLE服务器确实会显示在扫描中。

所以我很困惑。移动设备A的过滤扫描似乎可以找到通过BLE扫描仪应用程序创建的服务器,其中包含BLE扫描仪应用程序创建的分配的自定义UUID,但对于Arduino BLE服务器,它无法显示。

可能是因为BLE扫描仪应用程序没有进行过滤扫描以查找/连接到Arduino BLE服务器,所以它能够工作?在这种情况下,是否无法使用Arduino上的已知服务UUID进行过滤扫描?或者是否有隐藏的UUID我丢失了,或者UUID需要包含在广告数据/制造数据中?

共有1个答案

高宇定
2023-03-14

事实证明,这种差异是由于过滤扫描中未能显示的设备是因为广告数据中没有设置/提供UUID,所以扫描只是将其全部排除在外。

一旦我将UUID添加到广告数据中,它就会显示在扫描中。

在我的情况下,我不得不遵循这里的例子与Arduino的BLE库。https://github.com/nkolban/ESP32_BLE_Arduino/blob/master/examples/BLE_server/BLE_server.ino

 类似资料:
  • 我想在我的Android应用程序中被动地扫描BLE广告商, 但我找不到如何做到这一点。 > < li> 根据蓝牙4.0核心规范,存在被动扫描模式。< br >第6卷:核心系统包[低能耗控制器卷],< br > D部分:4.1被动扫描< br > https://www.bluetooth.org/DocMan/handlers/DownloadDoc.ashx?doc_id=282159 “设备可

  • 我必须构建一个Android应用程序,用于读取一种设备上的信息,该设备仅在过滤时在扫描时显示(一般扫描不会显示它)。该设备类似于信标,因此它仅通告数据,这些数据在通告上具有我想要的信息(它不可连接)。制造商给我的过滤器是原始数据。即: 0x02010612435542 我不能按名称过滤它,因为设备不会宣传它的名称。我也不能通过来完成,因为应用程序以前不会知道设备的地址(这将是许多此类设备)。 nr

  • 我正在写一个BLE应用程序,需要跟踪外设设备是否广告或已停止。 有什么建议或者是否有人做到了这一点?

  • 第一篇文章是关于Stack的,对于使用Python和DynamoDB编程来说,这是相当新的,但是我只是想在我的表上运行一个扫描,根据两个预定义的属性返回结果。 ---这是我的Python代码片段--- 我的发电机有4个磁场。 ID 日期 班次 安全 现在关于这个问题,在运行时,我得到了两个返回的表条目,而我应该只得到第一个条目...根据我的扫描标准,有“没有安全问题”的那个。 ---这是我的Dyn

  • 我正在Android上使用BluetoothLe(最小API: 21)。目前过滤服务uuid的过程有效,但不完全如预期的那样。下面是用于设置基本扫描仪参数的代码段,这是目前有效的。基于Ble的其他工作领域,(iOS,嵌入式硬件)很明显,有能力仅根据其16位UUID分配来过滤Ble设备。这让我想到Android...我意识到android对Ble及其相当细分的设备生态系统有一个相当艰难的开始,但我不

  • 我必须建立一个应用程序,扫描BLE设备,并返回它的数据。扫描时设备不会显示,除非我使用过滤器。 UUID 不是一个选项,设备不会广播其名称(使用 扫描时会显示 N/A。 我正在尝试按MAC地址扫描它。但是,我不知道MAC地址,因为它可以是任何类型的设备,所以应用程序之前不会知道设备的MAC地址。 我已经知道设备的地址上有一个前缀,即。问题是后缀。我如何(如果可能的话)制作一个正则表达式作为参数传递