无法从蓝牙文件设备发现所需的服务

Can't discover desired service from bluetooth le device

我制作的应用程序允许我连接到蓝牙设备并列出所有服务和特性。然而,唯一被认可的服务是 'Device Information Service',还有 'Unknown Service',但它似乎没有传递我正在寻找的数据。我确信该设备工作正常,因为附加到该设备的官方应用程序运行良好。可能是什么问题呢?我寻找的信息是否有可能通过未知服务传递并以某种方式加密?

您的应用正确地发现了服务,问题不存在。问题是您希望该服务是通用服务,但事实并非如此,它是供应商特定的服务。

一个vendor specific服务(特征)很容易识别:它的UUID是128位长。此外,nRF Connect 等通用 BLE 应用程序也无法解决这个问题,原因很简单,它们是 specific 而不是 generic

当一家公司销售实现通用服务的设备时,他们知道它可以与多个应用程序一起工作,但他们也知道这些应用程序 也适用于其竞争对手的其他设备 。例如,您可以从多家公司购买心率带,并将它们与智能手机上的多个健身应用程序搭配使用。

当公司销售实施供应商特定服务的设备时,他们知道该设备无法与除他们自己的应用程序之外的其他应用程序一起使用 并且 没有任何竞争对手能够销售也适用于他们的应用程序的设备

两种不同的策略,许多不同的目标。

基本上,设计您正在玩的设备的公司不希望您能够使用除他们自己的应用程序之外的其他应用程序来访问设备中的数据。就这么简单。

现在您仍然可以对他们的服务进行逆向工程。使用嗅探器,将使用他们的应用程序时传输的数据与应用程序中实际显示的数据进行比较,也许您会发现一些逻辑,并了解他们如何将数据隐藏在他们的服务中。然而,他们可能有一些条款规定您不得对这个或那个进行逆向工程。

你可以在这里看到通用服务,但除了我所说的,你不会学到任何东西:BLE GATT Services