【问题标题】:Manufacturer Specific Data on BLEBLE 上的制造商特定数据
【发布时间】:2023-03-06 08:36:01
【问题描述】:

我是android BLE编程的新手。

在我的第一个在 android 上使用 BLE 的应用中,我遇到了一个大问题。

我使用此功能从 Apple 蓝牙耳机获得了 ScanRecord。

@Override public void onScanResult(int callbackType, ScanResult 结果)

我使用 Apple corp 获得了制造商数据,ID(0x4C)。 之后,我不知道如何解码制造商数据。

我想辅助蓝牙耳机信息,如电池信息、方向信息等,但我不知道如何解码制造商数据。

我也搜了苹果开发文档(https://developer.apple.com/accessories/Accessory-Design-Guidelines.pdf) 但是那个指南文档对我没有帮助。

无论如何,谁告诉我如何解决这个问题?!!?! 感谢您阅读我的问题。

【问题讨论】:

  • 您能否提供有关蓝牙耳机的更多信息,例如苹果商店的链接?你确定他们使用的是 BLE 而不是普通的蓝牙?
  • @zafrani 感谢您对我的文章的回复。我在我的应用程序中收到了来自苹果蓝牙从机的消息,这是我的解码数据
  • ScanResult{ device=52:BD:E0:86:4F:37, scanRecord=ScanRecord [mAdvertiseFlags=-1, mServiceUuids=null, mManufacturerSpecificData= {76=[ 7, 25, 1, 2 , 32, 83, -86, 20, 1, 0, 0, -121, -90, -59, 127, -95, -48, 88, 73, 40, -28, 112, -12, 47, 123 , -30, 113]},mServiceData={},mTxPowerLevel=-2147483648,mDeviceName=null],rssi=-44,timestampNanos=153422579543736,eventType=16,primaryPhy=1,secondaryPhy=0,advertisingSid=255,txPower= 127,周期性广告间隔=0}。此消息表示此蓝牙耳机是 BLE 设备。

标签: bluetooth bluetooth-lowenergy android-bluetooth


【解决方案1】:

好的,从您的评论来看,您似乎通过 BLE 扫描了设备,并希望使用它提供的一项服务来获取电池信息等信息。

  1. 首先需要建立与 BLE 设备的连接。 您粘贴的扫描结果有一个方法 getDevice 您需要调用

  2. 获得设备后,您可以调用其connectGatt 方法。这将尝试连接您的手机和 BLE 设备。

  3. 步骤 2 中的 connectGatt 方法需要 callback。当连接成功或不成功时,回调将触发onConnectionStateChanged。如果成功,它将拥有success status。此方法还将为您提供gatt device,我们将在第 4 步中使用。

  4. 如果步骤 3 成功,我们可以假设您的手机已连接。我们要做的下一件事是发现服务。您可以通过使用 gatt 设备 discoverServices 方法来做到这一点。

  5. 发现服务后,您的回调将触发onServicesDiscovered。此时您现在可以使用服务了。根据耳机的 API,他们希望您阅读或订阅服务特征和描述符。由于我不知道 API,我无法进一步帮助您。但您最终将需要使用以下一项或多项:

并且该值将返回到您的回调上。请记住,在写入/读取/订阅另一个特征或描述符之前,您必须等待每个请求的回调。

【讨论】:

  • 非常感谢 zafrani。太有帮助了!但我还有另一个问题。 BLE 设备扫描 onScanResult 后,BLE 设备信息填充到 ScanResult 类中。但我不知道为什么 BLE 信息只在 android 手机上未配对。再次感谢。
  • 没问题。 BLE 信息仅在安卓手机上未配对是什么意思?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多