我是 cordova-plugin-audioinput 的创建者,这是一个 Cordova 插件,可让您访问来自麦克风的原始音频数据。如果不修改 PitchDetect 库,则不能将其与 audioinput 插件一起使用。 PitchDetect 库依赖于 getUserMedia API,旧版 Android 网络视图 (
一种可以解决您在 Android 上的特定问题的快速方法:
英特尔 XDK 支持使用 Crosswalk webview 构建 Android 应用程序,这使您能够使用支持 Web Audio API 和 getUserMedia API 的更新版本的 Blink(Chrome 的开源版本)。
要在您的构建中启用 Crosswalk,请转到英特尔 XDK 中 Android 的 构建设置 屏幕,并确保选中“使用 Crosswalk 优化” 复选框。有关将 Crosswalk 与英特尔 XDK 结合使用的更多信息:https://software.intel.com/en-us/xdk/blog/what-is-crosswalk。
我相信该应用也需要获得访问麦克风的权限,因此请在 “添加权限”中输入 “android.permission.RECORD_AUDIO” /em> 英特尔 XDK 构建配置的字段。
将 cordova-plugin-audioinput 与 PitchDetect 一起使用
另一方面,如果您希望将 cordova-plugin-audioinput 与 PitchDetect 库一起使用(例如,如果您希望您的应用也可以在不支持 getUserMedia API 的 iOS 中运行),您必须做一些修改;具体来说,您需要更改 PitchDetect 的 toggleLiveInput 函数,使其不依赖于 getUserMedia,而是启动(和停止)audioinput 插件并将 audioinput 插件连接到 PitchDetect 分析器:
audioinput.start({
streamToWebAudio: true,
audioContext: audioContext // To ensure that the audioinput plugin uses the same audioContext as the PitchDetect library
});
analyser = audioContext.createAnalyser();
analyser.fftSize = 2048;
audioinput.connect(analyser);
updatePitch();
请注意,上面的示例仍然依赖于 Web Audio API,它对旧 Android 版本的支持有限; Android 5+ 应该可以正常工作。有关不同浏览器上 Web Audio API 支持的更多信息:http://caniuse.com/#feat=audio-api。
我希望这会有所帮助,祝你好运!