我想知道是否还有其他人遇到与其他设备的L2CAP连接问题。我有一台可以在Android 4.1下正常运行的设备,但是现在我在Kit Kat上已无法正常工作。我可以在具有特定服务名称属性的BT套接字上进行侦听,以使电话可被设备发现,但这种方法不再起作用。

我的想法是这是Bluedroid的添加和Bluez堆栈的删除。 BLE效果很好,但是我已经失去了经典的BT功能。我已经使用BT调试方式重新构建了OS映像,并且可以看到奇怪的情况,即使设备不是BLE,它似乎也尝试通过BLE连接L2CAP。基本上,有很多ATT和GATT调用我认为对于经典BT设备不应该发生。我还尝试过删除BLE功能并重建堆栈,但这并不能解决问题,这似乎表明完全不支持BT上的L2CAP(基本上存在不连接但没有连接的相同问题)。 GATT / ATT通话)。关于经典BT的Bluedroid中是否存在L2CAP功能的任何想法?有什么方法可以替换堆栈或使用较新版本的Bluez(支持BLE)吗?任何帮助或想法,我们将不胜感激。

谢谢

最佳答案

不幸的是,不支持L2CAP版本4.2及更高版本,Android网站上有一个未解决的问题,其中包含更多详细信息。

Issue 58164: Support Bluetooth L2CAP

何时完成修复似乎没有任何反应。我们正在使用Wii遥控器,还有另一个项目android-bluez-ime,该项目也停止了工作。

当我在BluetoothSocket源代码中检查4.4时,它确实有一个常量TYPE_L2CAP,请参见下文:

/*package*/ static final int TYPE_RFCOMM = 1;
/*package*/ static final int TYPE_SCO = 2;
/*package*/ static final int TYPE_L2CAP = 3;


但是,如果您查看DOCS,则仅提及RFCOMM

干杯!

10-01 12:07