Как использовать стек android midi USB с несовместимыми устройствами

У меня есть работающее приложение для Android, которое использует проприетарную реализацию java midi для связи с несовместимым устройством midi через USB. Теперь я хочу перейти к стандартному стеку midi USB для Android, но не могу определить, как добавить / расширить необходимые тесты, чтобы разрешить обнаружение несовместимого устройства как midi-устройства.

Несовместимое устройство не имеет интерфейса USB типа "Аудиоустройство", который требуется для соответствия классу midi, а скорее представляет собой ряд интерфейсов "конкретного производителя", которые представляют собой порты midi. Из-за этого midi-стек android (например, с использованием образца MidiScope) не видит устройство.

Текущий проприетарный стек при подключении устройства USB использует априорные сведения о деталях подключения конкретного поставщика, чтобы определить, что подключение действительно является устройством midi, а затем создает события подключения устройства midi с использованием правильных интерфейсов USB.

Я хочу воспроизвести эту логику подключения, но с использованием midi-стека android, но не могу найти, где входящее USB-соединение определяется как midi-устройство и, таким образом, передается в midi-сервис android. Я изучил исходный код Android для UsbDeviceManager, UsbHostManager, UsbService, MidiService, MidiManager, MidiDeviceInfo, MidiDeviceService и т. Д., Но не могу понять, где происходит эта "проверка / фильтрация устройства Midi".

Если кто-то может указать мне правильное направление относительно того, как я могу достичь своей цели, я был бы очень благодарен.

1 ответ

UsbAlsaManager.java для Android просто использует MIDI-устройства Linux.

Таким образом, чтобы иметь доступ к своему устройству в Android, вы должны добавить поддержку драйвера Linux USB MIDI, а затем дождаться появления новой версии ядра на вашем устройстве Android.

Другие вопросы по тегам