我是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。
我希望這會有所幫助,祝你好運!
嘿。感謝您的支持。我完全按照你所說的(複製了上面的代碼)。但是我注意到autoCorrelate函數總是返回-1,這是不好的。它返回-1,因爲「if(rms <0.01)返回-1;」 (它被評論爲「//沒有足夠的信號」,我想有些事情是錯誤的,你能幫我解決嗎?爲什麼會這樣呢? – DigitalEvolution