我正在寻找一种方法来使用L2CAP连接到HID设备(鼠标),这是一个Android应用程序。但我在接受连接时出错。我正在使用反射来创建套接字。但有些事情是错的。 可以有人请直接给我一个Android的示例代码,这种方式使用L2CAP连接到HID设备,但没有生根。使用L2CAP连接到蓝牙HID设备(鼠标)
3
A
回答
10
什么是您的Android设备和Android版本? 如果它是Android 4.2,那么他们现在就按照我的理解使用了Broadcom,因此我们只能创建SDP连接。
我在Nexus 7(Android 4.2.2与CyanogenMod ROM 10)和Wiimote之间建立蓝牙连接时遇到同样的问题。这是一个HID设备,所以我需要使用L2CAP。 Android的最新版本能够创建此连接(我们可以通过查看市场来找出)。如果您搜索应用程序以在市场上处理此问题,您会看到所有安装有Android 4.0以上版本的设备不受支持的说明。
我刚刚发现这个帖子几分钟前,这可以帮助你:stackoverflow.com/a/7838587/1772805
让你解决这个我知道。如果我发现任何东西,我会保持联系。
编辑#1:我试过上面的链接解决方案。我改变了它使用不同的构造是这样的:
private static final int TYPE_RFCOMM = 1;
private static final int TYPE_SCO = 2;
private static final int TYPE_L2CAP = 3;
/**
* Create a BluetoothSocket using L2CAP protocol
* Useful for HID Bluetooth devices
* @param BluetoothDevice
* @return BluetoothSocket
*/
private static BluetoothSocket createL2CAPBluetoothSocket(BluetoothDevice device){
int type = TYPE_L2CAP; // L2CAP protocol
int fd = -1; // Create a new socket
boolean auth = false; // No authentication
boolean encrypt = false; // Not encrypted
int port = 0; // port to use (useless if UUID is given)
ParcelUuid uuid = new ParcelUuid(wiimoteUuid); // Bluetooth UUID service
try {
Constructor<BluetoothSocket> constructor = BluetoothSocket.class.getDeclaredConstructor(
int.class, int.class, boolean.class, boolean.class,
BluetoothDevice.class, int.class, ParcelUuid.class);
constructor.setAccessible(true);
BluetoothSocket clientSocket = (BluetoothSocket) constructor.newInstance(
type, fd, auth, encrypt, device, port, uuid);
return clientSocket;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
我成功创建插座,但是当我调用该方法connect()
,我得到这个错误:bt l2cap socket type not supported, type:3
。这个日志对我来说是一个非常糟糕的新东西,因为我发现这个thread其中说Android 4.2不支持L2CAP(或者只是被Google禁用..)。
因为我的设备植根于CyanogenMod 10,该功能可能会在新版本中恢复。我希望...
编辑#2:这是一个指向包含问题原因的C文件的链接:btif_sock.c。如果有人知道是否可以重新编写这个文件,或者如何使用外部C库将L2CAP功能添加到Android。恐怕这不是一个简单的任务。
相关问题
- 1. 连接到蓝牙设备?
- 2. 如何检查Android设备是否连接到蓝牙鼠标?
- 3. PyBluez蓝牙L2CAP
- 4. Android。连接蓝牙设备
- 5. 如何检测蓝牙HID设备是否断开连接?
- 6. 使用IOS设备的蓝牙连接
- 7. 使用蓝牙连接Android设备?
- 8. 使用蓝牙4.01连接蓝牙LE设备
- 9. Iphone蓝牙连接到非IOS设备
- 10. IPhone蓝牙连接到非IOS设备
- 11. 如何连接到蓝牙a2dp设备?
- 12. java.io.IOException:连接到蓝牙设备时[JSR82]
- 13. 无法连接到蓝牙设备
- 14. 列出并连接到蓝牙设备
- 15. 连接到具有蓝牙地址的蓝牙设备
- 16. 使Windows Mobile设备仿真蓝牙HID设备
- 17. 使用bluez python dbus接口连接到蓝牙LE设备
- 18. iOS蓝牙通知应用程序蓝牙设备连接时
- 19. 无法使用C++的窗口蓝牙API连接到蓝牙设备
- 20. Android的蓝牙L2CAP套接字绑定()
- 21. 将蓝牙设备连接到未知设备
- 22. 通过蓝牙将多个设备连接到一个设备
- 23. 从Android设备连接到嵌入式蓝牙设备
- 24. 蓝牙配对设备连接问题
- 25. 蓝牙连接两个设备(流)
- 26. 蓝牙设备连接问题
- 27. Android - 蓝牙设备连接广播
- 28. Android蓝牙获取连接的设备
- 29. 蓝牙自动连接配对设备
- 30. 无法连接蓝牙设备
如果我的回答对你有帮助,你能接受吗?问候。 –