2017-03-13 2 views
0

Ich versuche, eine Webanwendung mit Cordova in eine native Android-Anwendung zu portieren. Es ist ziemlich einfach, in erster Linie nur Midi-Nachrichten an ein angeschlossenes Gerät zu senden. Ich weiß, dass die WebMidi-API nur auf den neuesten Versionen von Webkit unter Android unterstützt wird, und ich habe unter 5.1 getestet. Ich habe es geschafft, zu beweisen, dass die Grundlagen funktionieren, indem Sie die ursprüngliche Webversion in Chrome auf dem Gerät ausführen, es funktioniert einwandfrei.Ist es möglich, SysEx-Nachrichten in WebMidi auf Cordova Android zu verwenden?

Das Problem beim Ausführen in Cordova ist die Nachrichten selbst werden aus irgendeinem Grund nicht gesendet, kein Fehler, nur nicht dort. Ich weiß, dass die API funktioniert, da ein separater Teil der Anwendung die verbundenen Geräte auflistet und eine Dropdown-Liste zur Auswahl anbietet, das funktioniert gut und erkennt das angeschlossene Midi-Gerät. Wenn ich jedoch Nachrichten sende, haben sie nicht den gewünschten Effekt auf dem Midi-Gerät. Es handelt sich um SysEx-Nachrichten, von denen ich glaube, dass sie zusätzliche Berechtigungen benötigen, android.webkit.resource.MIDI_SYSEX, ist es möglich, dass dies in Chrome, aber nicht in der Cordova-Anwendung aktiviert ist? Ich habe versucht, diese Berechtigung den ./config.xml und ./platform/android/AndroidManifest.xml hinzuzufügen, aber ohne Erfolg scheint es keine Wirkung zu haben, und es wird nicht einmal als zusätzliche Erlaubnis angezeigt wenn installiert.

Basierend auf verschiedenen Suchen, habe ich auch versucht, das Crosswalk-Plugin zu installieren, aber ich konnte das überhaupt nicht funktionieren, nicht einmal die Geräteliste.

Alle Gedanken willkommen.

Antwort

0

Das Problem, dem Sie gegenüberstehen, ist, dass Sie nicht einmal zur Midi-Sysex-Erlaubnis aufgefordert werden, wenn Sie bestimmte Kriterien erfüllen. Sie müssen entweder über einen lokalen Host oder über eine https-URL auf Ihren Web-Midi-Code zugreifen. Sysex ist potentiell schädlich und hat dies als Mindestsicherheitsanforderung verwendet.

Ich hatte es funktioniert auf Android durch Öffnen einer URL auf meinem zu meinem Entwickler-PC (mit einem selbst signierten SSL-Zertifikat auf wamp). Es gibt die Sicherheitsabfrage für Sysex und funktioniert dann wie erwartet, so Chrome auf Android funktioniert sicher. Crosswalk Cordova, aber ich bin mir nicht so sicher.

Ich habe versucht, einen kleinen Webserver in meiner cordova App (auf Android) zu betreiben, den Webserver auf 127.0.0.1:8080 zu starten und dann mit chrome (separat auf demselben Gerät) verbunden. Fühlt sich verlockend nah dran, aber ich brauche es, um in meine App laufen zu lassen!

Meine Versuche, einen iFrame mit der URL des Webservers auszuführen (http://127.0.0.1:8080), sind fehlgeschlagen. Es ist einfach nicht gefunden. Kein Sicherheitsfehler, scheint also nicht mit White-Listing zu tun zu haben, obwohl ich mich weiter damit befassen muss, um sicher zu sein.

Es scheint, dass das Webserver-Plugin erfolgreich ausgeführt wird, aber nicht in der App sichtbar ist.

Sie sollten ein Spiel mit this, und sehen, ob es man überall bekommt ...

Oder vielleicht werden Sie finden eine andere, die aus der App selbst sichtbar ist. Der alternative Ansatz besteht darin, einen Socket-Server zu verwenden, um eine Verbindung zu Ihrem Computer herzustellen, und die Midi-Geräte damit verbunden zu haben. Nicht gerade portabel!

Verwandte Themen