1

我正在尝试使用 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 插件,但根本无法让它工作,甚至连设备列表都没有。

欢迎任何想法。

4

1 回答 1

2

您面临的问题是,除非您满足某些条件,否则您甚至不会被提示获取 midi sysex 权限。您要么必须通过 localhost 或 https URL 访问您的 Web MIDI 代码。Sysex 可能有害,因此他们将此作为最低安全要求。

通过在我的开发 PC 上打开一个 URL(在 wamp 上使用自签名 SSL 证书),我让它在 android 上运行。它为 sysex 提供安全提示,然后按预期工作,因此 android 上的 chrome 肯定可以工作。然而,人行横道科尔多瓦,我不太确定。

我尝试在我的科尔多瓦应用程序(在 Android 上)中运行一个小网络服务器,在 127.0.0.1:8080 上启动网络服务器,然后使用 chrome 连接到它(分别在同一设备上)。感觉非常接近,但我需要它我的应用程序中运行!

我尝试使用网络服务器的 URL ( http://127.0.0.1:8080 ) 运行 iFrame 失败了。只是没有找到。没有安全错误,因此似乎与白名单无关,尽管我需要进一步调查以确定。

网络服务器插件似乎运行成功,但在应用程序中不可见。

你应该玩一下这个,看看它是否能把你带到任何地方......

或者,您可能会在应用程序本身中找到另一个可见的。另一种方法是使用套接字服务器连接到您的计算机,并将 midi 设备连接到它。虽然不完全便携!

于 2017-06-08T01:19:27.570 回答