在Android中获取麦克风音频。 AudioContext

时间:2016-12-05 22:24:39

标签: android cordova audio web-audio intel-xdk

(出于某种原因,我无法得到这个问题的答案......)

您好。我需要访问Android麦克风。我使用以下网址在网上制作了一个调谐器应用:https://github.com/cwilso/PitchDetect。工作得很好。

然而,当我使用intelXDK和cordova插件将应用程序构建到android时,我无法获得任何麦克风输入。我不确定是否需要使用它:https://github.com/edimuj/cordova-plugin-audioinput。似乎是在android中获取audioContext的正确方法。此外,它在安装应用程序时显示警告,表示需要授权。可能这是正确的道路,不是吗?

无论如何,有人可以帮我这个吗?任何想法,尽管我得到日志说输入已启用我无法获得任何音频? (麦克风正在工作)

1 个答案:

答案 0 :(得分:1)

我是cordova-plugin-audioinput的创建者,这是一个Cordova插件,可让您从麦克风访问原始音频数据。如果不修改PitchDetect库,则不能将其与audioinput插件一起使用。 PitchDetect库依赖于getUserMedia API,旧的Android webviews(< 5.0)不支持该API,并且任何iOS网页浏览都不支持。另一方面,cordova-plugin-audioinput专门用于在iOS和旧版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> Intel XDK构建配置的字段。

将cordova-plugin-audioinput与PitchDetect一起使用

另一方面,如果您希望将cordova-plugin-audioinput与PitchDetect库一起使用(例如,如果您希望您的应用也能在iOS中运行,而不支持getUserMedia API),那么必须做一些修改;具体来说,您需要更改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

我希望这有帮助并祝你好运!