Android Can';无法从蓝牙设备中发现所需的服务

Android Can';无法从蓝牙设备中发现所需的服务,android,service,bluetooth-lowenergy,characteristics,Android,Service,Bluetooth Lowenergy,Characteristics,我制作了一个应用程序,可以连接到蓝牙le设备,并列出所有服务和特性。然而,唯一可识别的服务是“设备信息服务”,也有“未知服务”,但它似乎没有传递我正在寻找的数据。我确信该设备工作正常,因为连接到该设备的官方应用程序工作正常。有什么问题吗?有没有可能我正在寻找的信息在未知服务中被传递,并以某种方式被加密?你的应用程序正确地发现了这些服务,但问题并不存在。问题是,您希望该服务是通用的,但事实并非如此,它是特定于供应商的服务 供应商特定的服务(特征)很容易识别:其UUID为128位长。此外,nRF C

我制作了一个应用程序,可以连接到蓝牙le设备,并列出所有服务和特性。然而,唯一可识别的服务是“设备信息服务”,也有“未知服务”,但它似乎没有传递我正在寻找的数据。我确信该设备工作正常,因为连接到该设备的官方应用程序工作正常。有什么问题吗?有没有可能我正在寻找的信息在未知服务中被传递,并以某种方式被加密?

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

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

当一家公司销售一台实现通用服务的设备时,他们知道该设备将用于多个应用程序,但他们也知道这些应用程序也将用于其竞争对手的其他设备。举例来说,你可以从几家公司购买一条心率带,并将其与智能手机上的几个健身应用程序一起使用

当一家公司销售一台实现特定于供应商的服务的设备时,他们知道除了自己的应用程序之外,它将不能与另一个应用程序一起工作,并且没有任何竞争对手能够销售与他们的应用程序一起工作的设备

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

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

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


您可以在这里看到通用服务,但您所学到的只是我所说的:

您正在尝试连接到任何健康设备吗?是的,我正在尝试连接到温度计。您可以使用一个通用应用程序查看服务,例如Android版的nRF connect或iOS版的LightBlue。当然,信息可能存在于特定于供应商的特征中,那么只有他们的官方应用程序才知道如何读取数据。事实上,这就是想法:如果你想让你的设备与你的应用程序以外的其他应用程序一起工作,你就使用标准特征。如果您希望用户只能通过您的应用程序查看数据,则可以将数据封装在某些特定于供应商的私有服务中。如果用户知道他在寻找什么,它可以进行反向工程。我安装了nRF Connect,它显示了与我的应用程序相同的服务,即“设备信息服务”和“未知服务”,UUID:cdeacb80-5235-43c07-8846-93a37ee6b86d。最后,我能够从供应商那里获得蓝牙通信协议。所以问题解决了,谢谢你的帮助。