Меня давно интересовало использование Wiimote в качестве контроллера для Android.
Я знаю, что это было возможно за много лет до go до того, как были удалены методы создания сокета l2cap. из Android api.
В API 29 (Android 10) были добавлены методы для создания сокета l2cap, поэтому теоретически теперь должна быть возможность использовать Wiimote в качестве контроллера.
Я создаю и пытаюсь подключиться к сокету следующим образом:
BluetoothSocket socket = mWiimote.createInsecureL2capChannel(0x13);
socket.connect();
Где 0x13
- это PSM канала данных Wiimote, как указано здесь: https://wiibrew.org/wiki/Wiimote#HID_Interface
Я попытался подключиться к трубе управления, но безрезультатно.
Я только что получил: java.io.IOException: read failed, socket might closed or timeout, read ret -1
У кого-то еще возникла та же проблема при попытке подключить плату баланса Wii: Android 10 Соединение L2CAP IOException timeout Wii Balance Board
Им удалось выполнить сопряжение с платой баланса, но я потерпел неудачу, насколько я понимаю, для этого требуется привилегированное разрешение Bluetooth, так как вы должны установить ключ (ma c адрес хоста или контроллера, в обратном направлении) в зависимости от кнопок, нажимаемых для обнаружения Wiimote. Я не уверен, что этот человек использует привилегированное разрешение (и имеет свое приложение в папке /priv-app/
), или у него есть обходной путь.