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

标签 android service bluetooth-lowenergy characteristics

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

最佳答案

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

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

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

当公司销售实现供应商特定服务的设备时,他们知道该设备不能与除他们自己的应用程序之外的其他应用程序一起工作并且不能与任何竞争对手将能够销售同样适用于其应用程序的设备

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

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

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

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

关于android - 无法从蓝牙文件设备发现所需的服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39343979/

相关文章:

java - Branch.io(Android SDK): what should I set in <data android:scheme ="androidexample"/>?

android - 如何使用 Jsoup 提取新闻文章?

linux - 停止 postgresql 在 ubuntu 启动时启动

c# - Windows 服务 Facebook C# SDK 架构

android - 为什么 margin 在 Android 中覆盖 marginLeft(与 radius 等相同)?

java - 检测手机是否插入电脑

angular - 组件中的模拟服务 - 模拟被忽略

android - IONIC 电容器 BLE 插件扫描不起作用

java - 在 Android 中未收到 BLE 通知

raspberry-pi - Bluez 在与我的 BLE Remote 配对后崩溃