2016-12-05 222 views
2

(出于某种原因我无法得到这个问题的答案...)在android中获取麦克风音频。 AudioContext

你好。我需要访问android麦克风。我在网络上使用这个:https://github.com/cwilso/PitchDetect制作了一个调谐器应用程序。工作得很好。

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

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

回答

1

我是cordova-plugin-audioinput的创建者,Cordova插件允许您访问麦克风的原始音频数据。在不修改PitchDetect库的情况下,您不能将其与audioinput插件一起使用。 PitchDetect库依赖于旧版Android网页浏览器(< 5.0)不支持的getUserMedia API,并且在任何iOS网页浏览中都不受支持。另一方面,cordova-plugin-audioinput专门用于在iOS和旧版Android Web浏览器上启用麦克风访问功能。

,可以解决Android平台上的特定问题的快速方法:

英特尔XDK支持建设有人行横道web视图,它使您能够使用闪现的新版本(开源版本的Android应用的Chrome),支持Web Audio API和getUserMedia API。

要在建立使人行横道,进入构建设置屏幕Android在英特尔XDK,并确保“优化与人行横道”复选框被选中。有关使用Crosswalk与Intel XDK:https://software.intel.com/en-us/xdk/blog/what-is-crosswalk的更多信息。

我相信,应用程序也将需要访问权限的话筒,所以在“添加权限”英特尔XDK构建配置的字段中输入“android.permission.RECORD_AUDIO”

与PitchDetect

一起使用科尔多瓦 - 插件 - audioinput如果,在另一方面,要与PitchDetect库一起使用的科尔多瓦 - 插件 - audioinput(例如,如果你希望你的应用也可以在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,该API对较早的Android版本提供有限的支持; Android 5+应该可以正常工作。有关在不同浏览器上支持Web Audio API的更多信息:http://caniuse.com/#feat=audio-api

我希望这会有所帮助,祝你好运!

+0

嘿。感谢您的支持。我完全按照你所说的(复制了上面的代码)。但是我注意到autoCorrelate函数总是返回-1,这是不好的。它返回-1,因为“if(rms <0.01)返回-1;” (它被评论为“//没有足够的信号”,我想有些事情是错误的,你能帮我解决吗?为什么会这样呢? – DigitalEvolution