我尝试使用Cordova将Web应用程序移植到原生Android应用程序。它非常简单,主要是将Midi消息发送到连接的设备。我知道WebMidi API仅支持最新版本的Android上的Webkit,我一直在测试5.1。我已经设法通过在设备上的Chrome上运行原始网络版来证明基本功能正常,它运行正常。
在Cordova中运行时的问题是消息本身由于某种原因没有发送,没有错误,只是没有到达那里。我知道API正在运行,作为应用程序的一个单独部分列出了连接的设备,并提供了一个可供选择的下拉列表,这样可以正常工作,并识别连接的Midi设备。但是,当我发送消息时,他们不会对Midi设备产生预期的效果。它们是SysEx消息,我认为需要额外的权限,android.webkit.resource.MIDI_SYSEX,是否可能在Chrome上启用但在Cordova应用程序上没有?我已尝试将此权限添加到./config.xml和./platform/android/AndroidManifest.xml但无效,它似乎没有任何效果,并且没有甚至在安装时显示为附加权限。
根据各种搜索,我也尝试过安装Crosswalk插件,但根本无法使用,甚至连设备列表都没有。
欢迎任何想法。
答案 0 :(得分:1)
您面临的问题是,除非您符合某些条件,否则您甚至不会被提示获得midi sysex权限。您必须通过本地主机或https URL访问您的Web midi代码。 Sysex具有潜在危害,因此他们将此作为最低安全要求使用。
我通过在我的开发PC上打开一个URL(在wamp上使用自签名SSL证书)来开发android。它为sysex提供了安全提示,然后按预期工作,因此android上的chrome肯定会起作用。然而,Crosswalk Cordova,我不太确定。
我尝试在我的cordova应用程序中运行一个小型网络服务器(在Android上),在127.0.0.1:8080启动网络服务器,然后使用chrome连接到它(分别在同一台设备上)。感觉非常接近,但我需要它来运行 in 我的应用程序!
我尝试使用网络服务器的网址(http://127.0.0.1:8080)运行iFrame失败了。它没有找到。没有安全错误,所以似乎与白名单有关,尽管我需要进一步研究这一点。
似乎webserver插件已成功运行,但在应用程序中无法显示。
你应该玩this游戏,看看它能不能带你去任何地方......
或者您可能会在应用程序内找到另一个可见的内容。 另一种方法是使用套接字服务器连接到您的计算机,并将midi设备连接到它。虽然不完全便携!