(出于某种原因我无法得到这个问题的答案......)
你好。我需要访问安卓麦克风。我使用这个在网络上制作了一个调谐器应用程序:https://github.com/cwilso/PitchDetect .工作得很好。
但是,当我使用 intelXDK 和 cordova 插件将应用程序构建到 android 时,我无法获得任何麦克风输入。我不确定我是否需要使用这个:https://github.com/edimuj/cordova-plugin-audioinput .似乎是在 android 中获取 audioContext 的正确方法。另外,它在安装应用程序时显示警告,提示它需要授权。这可能是正确的道路,不是吗?
有人可以帮我解决这个问题吗?知道为什么,尽管我收到日志说输入已启用但我无法获得任何音频吗? (麦克风正在工作)
最佳答案
我是 cordova-plugin-audioinput 的创建者,这是一个 Cordova 插件,可让您访问来自麦克风的原始音频数据。如果不修改 PitchDetect 库,则不能将其与 audioinput 插件一起使用。 PitchDetect 库依赖于 getUserMedia API,它在旧版 Android webviews (<5.0) 上不受支持,并且在任何 iOS webviews 上都完全不受支持。另一方面,cordova-plugin-audioinput 是专门为在 iOS 和旧版 Android webview 上启用麦克风访问而创建的。
一种可以解决您在 Android 上的特定问题的快速方法:
英特尔 XDK 支持使用 Crosswalk webview 构建 Android 应用程序,这使您能够使用支持 Web Audio API 和 getUserMedia API 的更新版本的 Blink(Chrome 的开源版本)。
要在您的构建中启用 Crosswalk,请转到英特尔 XDK 中适用于 Android 的build设置屏幕,并确保选中“使用 Crosswalk 优化” 复选框。有关将 Crosswalk 与英特尔 XDK 结合使用的更多信息:https://software.intel.com/en-us/xdk/blog/what-is-crosswalk .
我认为该应用还需要访问麦克风的权限,因此在 “添加权限” 英特尔 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 音频 API 支持的更多信息:http://caniuse.com/#feat=audio-api .
希望这对您有所帮助,祝您好运!
关于android - 在 android 中获取麦克风音频。音频上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40984462/