我是否可以跳过发现并仍然可以读取和写入BLE外设(如果我知道UUID)

时间:2016-05-15 23:11:55

标签: android bluetooth-lowenergy service-discovery

我正在编写一个Android应用程序,通过BLE连接外设并与之通信。我已经在BLE开发中使用过几次,有iOS和固件以及现在的android,而且doc似乎总是建议你:

  1. connect
  2. 发现服务
  3. (在某些堆栈上,而不是android)第二轮服务中的特征发现
  4. 保存对特征的引用
  5. 根据需要读取和写入特征(或订阅通知)
  6. 在我的脑海中,我一直想知道是否可以跳过发现步骤?如果你确定你正在谈论的是什么情况,你就知道外围设备提供的所有服务和属性的UUID和属性。我的应用程序可以假定使用UUID和属性创建我自己的BluetoothGattCharacteristic对象,并对它们进行读/写,并且堆栈将只发送相应的命令,而不经过初始的interogation?

    然后,在这个项目中,这个想法被迫放在我的脑海中,因为我们在发现响应中遇到了一些神秘的故障/腐败 - 在某些手机上它会发布服务,但没有外围设备。这是间歇性的,我们确信这是由于外围固件或配置中的一些奇怪,但不幸的是我们不能等待他们解决他们的问题。所以我决定用一些成功来测试上述理论:

    我构建了一个辅助路径,在这种情况下,它将使用正确的UUID和属性创建BluetoothGattCharacteristic对象,并将它们附加到接收的服务对象。瞧,看哪......它奏效了!有点。我可以阅读和写入28个特征中的大约25个......不确定其他三个特征有什么问题。但在我看来,这似乎是一个很有希望的结果w.r.t.我上面的理论!

    所以我的问题是,我的理论是真的吗?我可以跳过发现吗?如果是这样,是否有关于如何执行此操作的示例代码或指导,如何在发现响应的上下文之外正确设置假定服务和特征对象? (因为我显然很接近,打击25/28 = 0.893,但没有雪茄。)

    非常感谢有关此主题的讨论,特别是任何示例代码,项目或代码段。

0 个答案:

没有答案
相关问题