2017-03-13 36 views
0

我试图将一个Web应用程序移植到使用Cordova的原生Android应用程序。这很简单,主要是将Midi消息发送到连接的设备。我知道WebMidi API仅支持Android上最新版本的Webkit,并且我一直在5.1上进行测试。我已经证明基础知识是通过在设备上的Chrome上运行原始Web版本来实现的,它工作正常。可以在Cordova Android的WebMidi中使用SysEx消息吗?

在科尔多瓦运行的问题是,由于某些原因,邮件本身并未发送,没有错误,只是没有到达那里。我知道API正在工作,因为应用程序的单独部分列出了连接的设备,并提供了可供选择的下拉列表,此工作正常,并可识别连接的Midi设备。但是,当我发送消息时,它们对Midi设备没有预期的效果。他们是系统信息消息,我认为需要额外的权限,android.webkit.resource.MIDI_SYSEX,这可能是在Chrome上启用的,而不是在Cordova应用程序上启用的?我已经尝试将这个权限添加到./config.xml和./platform/android/AndroidManifest.xml中,但无济于事,它似乎没有任何作用,甚至没有显示为额外的权限当安装。

基于各种搜索,我也尝试安装Crosswalk插件,但无法完全解决这个问题,甚至连设备列表都没有。

任何想法的欢迎。

回答

0

您面临的问题是,除非您符合特定条件,否则甚至不会提示您输入midi sysex权限。您必须通过本地主机或通过https网址访问您的网络midi代码。 Sysex具有潜在的危害性,因此他们将此用作最低安全要求。

我通过在我的开发PC上打开了一个URL(使用wamp上的自签名SSL证书),让它在android上工作。它给出了sysex的安全提示,然后按预期工作,所以android上的chrome肯定能正常工作。但是,Crosswalk Cordova我不太确定。

我已经尝试在我的cordova应用程序(在Android上)中运行一个小型web服务器,在127.0.0.1:8080上启动web服务器,然后使用chrome连接到它(单独在同一设备上)。感觉非常接近,但我需要它运行我的应用程序!

我尝试使用网络服务器的URL(http://127.0.0.1:8080)运行iFrame失败。它只是没有找到。没有安全错误,所以似乎不涉及白名单,尽管我需要进一步确认。

看来,web服务器插件运行成功,但在应用程序内不可见。

你应该有一个把玩this,看看它可以让你在任何地方......

或许你会发现另外一个让人们看到应用程序本身。 另一种方法是使用套接字服务器连接到您的计算机,并连接到它的MIDI设备。虽然不完全便携!

相关问题