我正在尝试使用Cordova将web应用程序移植到原生Android应用程序。它相当简单,主要是向连接的设备发送Midi消息。我知道Webkit API只在最新版本的WebMidi上支持,我一直在5.1版本上进行测试。通过在设备上的Chrome上运行原始网页版本,我成功地证明了基本原理是有效的,它工作得很好。
在Cordova中运行时的问题是,由于某种原因,消息本身没有发送,没有错误,只是没有到达那里。我知道API正在工作,因为应用程序的一个单独部分列出了连接的设备,并提供了一个可供选择的下拉列表,它工作得很好,并识别连接的Midi设备。然而,当我发送消息时,它们对Midi设备没有预期的效果。它们是SysEx消息,我认为这需要额外的权限,android.webkit.resource.MIDI_SYSEX,有没有可能在Chrome上启用了这一功能,但在Cordova应用程序上没有启用?我尝试将此权限添加到./config.xml和./platform/android/AndroidManifest.xml中,但无济于事,它似乎没有任何效果,甚至在安装时也没有显示为附加权限。
根据各种搜索结果,我也尝试过安装Crosswalk插件,但根本无法运行,甚至连设备列表都无法运行。
欢迎任何想法。
发布于 2017-06-08 09:19:28
您面临的问题是,除非您满足某些标准,否则甚至不会提示您获得midi sysex许可。您必须通过本地主机或https URL访问web midi代码。Sysex具有潜在的危害性,因此他们将其作为最低安全要求。
我通过在我的开发PC上打开一个URL (使用wamp上的自签名SSL证书),让它在android上工作。它给出了sysex的安全提示,然后就可以正常工作了,所以在android上的chrome肯定能正常工作。然而,科尔多瓦人行横道,我不是很确定。
我试着在我的cordova应用程序(在Android上)中运行一个小then服务器,在127.0.0.1:8080启动then服务器,然后使用chrome连接到它(在同一设备上单独运行)。感觉非常接近,但我需要它在我的应用程序中运行!
我尝试使用URL服务器的URL (http://127.0.0.1:8080)运行iFrame失败。只是找不到而已。没有安全错误,所以似乎与白名单无关,尽管我需要进一步调查以确保。
not服务器插件似乎正在成功运行,但在应用程序中不可见。
你应该尝试一下this,看看它能不能帮到你……
或者你会发现另一个在应用程序内部可见的应用。另一种方法是使用套接字服务器连接到您的计算机,并将midi设备连接到它。不过并不完全是可移植的!
https://stackoverflow.com/questions/42771644
复制相似问题