android - Android 10 L2CAP 连接 IOException 超时 Wii 平衡板
问题描述
背景
很久以前,我的任务是为 Wii 平衡板制作一个 android 应用程序,经过一番折腾后,我发现 android 不再支持 L2CAP。更多的研究导致它被重新添加到 Android 10 中。随着 Android 10 的推出,我现在一直在尝试破解它。
问题
所以我现在的简单目标是与 Wii 平衡板建立连接。
我的连接方法是:
开始发现
将发现的蓝牙设备添加到列表
当您单击设备时,它会尝试打开一个套接字,如下所示:
bluetoothSocket = btDevice.createInsecureL2capChannel(port);
正如WiiBrew网站上提到的,我使用 psm 值 0x13 作为输入,使用 0x11 作为输出。
然后我使用
bluetoothSocket.connect
并继续接收 IOException(超时错误)我也尝试过使用两者
createL2capChannel
并createInsecureL2capChannel
获得相同的结果我能够成功地使用手机 BT 地址与设备配对
btDevice.createBond()
,然后向后使用手机 BT 地址.setpin()
,Wii 平衡板只是充当“哑”输入设备。(不确定是否需要配对/好主意)
以上是我尝试连接的简化流程。我还尝试使用BalanceBoard.java
Paul Burton 的fitscales repo 更新所有旧蓝牙代码,但我仍然会超时。
解决方案
你看过 bt_stack 日志吗?
这是我尝试用 wiimote 打开套接字的过程:
04-05 12:25:04.949 E/bt_stack(4895): [ERROR:btif_sock_l2cap.cc(244)] SOCK_LIST: free(id = 4) - NO app_fd!
04-05 12:25:04.949 I/bt_stack(4895): [INFO:btsnoop.cc(323)] clear_l2cap_whitelist: Clearing whitelist from l2cap channel. conn_handle=65535 cid=65:0
04-05 12:25:04.949 E/bt_l2cap(4895): L2CA_FreeLePSM: Invalid PSM=19 value!
04-05 12:25:40.141 I/bt_stack(4895): [INFO:btsnoop.cc(323)] clear_l2cap_whitelist: Clearing whitelist from l2cap channel. conn_handle=1 cid=66:64
04-05 12:25:55.736 I/bt_stack(4895): [INFO:btsnoop.cc(323)] clear_l2cap_whitelist: Clearing whitelist from l2cap channel. conn_handle=2 cid=67:65
我相信这就是问题所在,我只是一个新手,所以我不确定可以做些什么。我知道旧的连接方式将 fd 作为参数传递给蓝牙套接字构造函数,但我认为这不再可能了
推荐阅读
- ffmpeg - 连接幻灯片和普通视频会导致音频流血
- c - %25d 在 C 中是什么意思
- javascript - 作为对象使用时数据不会更新,但作为变量时会正常变化
- vue.js - 如何获取状态值并传入方法参数
- java - Android Studio - 程序类型已经存在:org.bouncycastle.LICENSE
- r - X 轴标签在 R 条形图中未正确对齐
- java - 输入为负时如何退出扫描仪?
- c++ - 在额外范围内包含 std::lock_guard
- c# - MVVM Xamarin Forms - 绑定视图模型属性的命令参数
- java - 如何将 2 个输入保存到不同的 ModelAttributes?