【问题标题】:LE Connection-Oriented Channels - Android supportLE 面向连接的频道 - Android 支持
【发布时间】:2018-04-14 21:24:03
【问题描述】:

Here 声明 Android 8.0 支持 LE Con​​nection-Oriented Channels。但是我在 Android API 中没有看到任何对它的引用。 BluetoothAdapter class 仅具有侦听 RFCOMM 套接字的方法(仅在 BT Classic 上运行); BluetoothSocket class 说:“最常见的蓝牙套接字类型是 RFCOMM,这是 Android API 支持的类型。”

如何使用 LE CoC?有人可以帮助澄清这种困惑吗?此外,在 Java API 下运行的 BLE 堆栈似乎支持它们,例如,请参阅 here

【问题讨论】:

  • 从 Android Q 开始将支持 L2CAP CoC。我无法引用官方消息

标签: android bluetooth bluetooth-lowenergy android-bluetooth


【解决方案1】:

LE L2CAP Connection Oriented Channel Support 是核心规范 4.1 中新引入的功能。

查看android 8.0代码后(我没有测试CoC功能,因为它需要远程设备也支持CoC),从代码的角度来看,你应该可以在Android 8.0使用这个功能。

假设你想在Phone端连接socket作为客户端,你不需要调用RFCOMM socket而是调用L2CAP,使用下面的socketAPI; 请注意,需要提及两项: 1) 初始化套接字结构时使用 TYPE_L2CAP。 2)设置套接字端口时应用CoC掩码(0x20000)。

这里是 JNI 链接:JNI

这里是堆栈链接:stack

Here 下,您将找到 L2CAP 连接的套接字链接。

page 上的第 912 行表示 CoC 格式。

【讨论】:

  • 谢谢,我也没有 CoC 设备;下周我会得到一个。我试图找到BLE堆栈代码和你提到的Java API之间的链接,但我失败了;你对此有什么见解吗?
  • 您可能会发现以下链接可以帮助您了解逻辑:
  • @GuoXingmin 这些 API 只能通过 NDK 或反射访问,我说对了吗?
  • @GuoXingmin 是的,我看到有一些方法可以获取 type=L2CAP 的 BluetoothSocket 实例,但它们有 @hide 注释
  • 例如:BluetoothDevice 类中的createL2capSocket 方法
猜你喜欢
  • 2016-10-22
  • 1970-01-01
  • 2016-12-22
  • 2013-04-12
  • 2016-11-06
  • 2011-05-25
  • 1970-01-01
  • 1970-01-01
  • 2012-06-20
相关资源
最近更新 更多