我想知道是否有其他人遇到与其他设备的L2CAP连接问题。我有一个在Android 4.1下运行良好的设备,但现在我在Kit Kat上它不再工作了。我可以在具有特定服务名称属性的BT套接字上侦听,以使手机可被设备发现,但这不再有效。
我的想法是它增加了Bluedroid并删除了Bluez堆栈。 BLE运行良好,但我失去了经典的BT功能。我用BT调试方式重新构建了操作系统映像,我可以看到奇怪的情况,它似乎尝试通过BLE连接L2CAP,即使设备不是BLE。基本上有很多ATT和GATT调用,我认为对于传统的BT设备应该没有。我也尝试删除BLE功能并重建堆栈,但这并没有解决问题,这似乎表明BTC上的L2CAP根本不受支持(基本上它有相同的问题,没有连接但没有GATT / ATT电话)。有关L2CAP功能是否存在于Bluedroid for classic BT中的任何想法?有没有办法更换堆栈或使用更新版本的Bluez(支持BLE)?非常感谢任何帮助或想法。
由于
答案 0 :(得分:1)
不幸的是,版本4.2以后版本不支持L2CAP
,Android网站上有一个公开的问题,其中包含更多详细信息。
Issue 58164: Support Bluetooth L2CAP
似乎没有回复何时进行修复。我们使用的是Wii遥控器,还有另一个项目android-bluez-ime,它也停止了工作。
当我检查4.4的BluetoothSocket源代码时,它确实有一个常量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
。
干杯!!