2016-12-05 94 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