Можно ли использовать сообщения SysEx в WebMidi на Cordova Android?

Я пытаюсь перенести веб-приложение в собственное приложение Android с помощью Cordova. Это довольно просто, в первую очередь просто отправка сообщений Midi на подключенное устройство. Я знаю, что WebMidi API поддерживается только в последних версиях Webkit для Android, и я тестировал 5.1. Мне удалось доказать, что основы работают, запустив оригинальную веб-версию в Chrome на устройстве, она работает нормально.

Проблема при запуске в Кордове заключается в том, что сами сообщения по какой-то причине не отправляются, нет ошибки, просто не попадают. Я знаю, что API работает, поскольку в отдельной части приложения перечислены подключенные устройства и представлен раскрывающийся список для выбора, это отлично работает и распознает подключенное устройство Midi. Однако, когда я отправляю сообщения, они не оказывают желаемого эффекта на устройство Midi. Это сообщения SysEx, которые, как я считаю, требуют дополнительных разрешений, android.webkit.resource.MIDI_SYSEX, возможно ли, что это включено в Chrome, но не в приложении Cordova? Я попытался добавить это разрешение в ./config.xml и ./platform/android/AndroidManifest.xml, но безрезультатно, похоже, это не имеет никакого эффекта и даже не отображается как дополнительное разрешение при установке.

Основываясь на различных поисках, я также попытался установить плагин Crosswalk, но не смог заставить его работать вообще, даже список устройств.

Любые мысли приветствуются.


person Paul Gregory    schedule 13.03.2017    source источник


Ответы (1)


Проблема, с которой вы столкнулись, заключается в том, что вам даже не будет предложено разрешить midi sysex, если вы не соответствуете определенным критериям. Вы должны либо получить доступ к своему веб-миди-коду через локальный хост, либо по URL-адресу https. Sysex потенциально опасен, поэтому они использовали это как минимальное требование безопасности.

Я работал на Android, открыв URL-адрес на моем компьютере разработчика (используя самоподписанный сертификат SSL на wamp). Он выдает запрос безопасности для sysex, а затем работает должным образом, поэтому Chrome на Android точно работает. Crosswalk Cordova, однако, я в этом не уверен.

Я пробовал запустить небольшой веб-сервер в моем приложении Cordova (на Android), запустив веб-сервер на 127.0.0.1:8080, а затем подключился к нему с помощью Chrome (отдельно на том же устройстве). Кажется заманчиво близким, но мне нужно, чтобы он запускался в моем приложении!

Мои попытки запустить iFrame с URL-адресом веб-сервера (http://127.0.0.1:8080) не удались. это просто не найдено. Никакой ошибки безопасности нет, поэтому, похоже, не связано с белым списком, хотя мне нужно изучить это дополнительно, чтобы быть уверенным.

Кажется, что плагин веб-сервера работает успешно, но его не видно из приложения.

Вам следует поиграть с this и посмотреть, приведет ли это вас к чему-нибудь ...

Или, возможно, вы найдете еще один, который виден из самого приложения. Альтернативный подход - использовать сервер сокетов для подключения к вашему компьютеру и подключать к нему устройства midi. Но не совсем портативный!

person Tolli    schedule 08.06.2017