Как использовать стек 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.