2016-12-05 3 views
2

(어떤 이유로이 문제에 대한 답변을 얻을 수 없습니다 ...)android에서 마이크 오디오를 가져옵니다. AudioContext

안녕하세요. 안드로이드 마이크에 액세스해야합니다. 나는 이것을 사용하여 웹에 튜너 앱을 만들었다 : https://github.com/cwilso/PitchDetect. 잘 작동합니다.

그러나 intelXDK 및 코드바 플러그인을 사용하여 Android를 앱을 빌드 할 때 마이크 입력을 얻을 수 없습니다. 나는 이것을 사용해야 할 지 모르겠다 : https://github.com/edimuj/cordova-plugin-audioinput. 안드로이드에서 audioContext를 얻는 올바른 방법처럼 보입니다. 플러스 그것은 권한을 부여해야한다는 애플 리케이션을 설치할 때 경고를 보여줍니다. 아마 그것은 올바른 길일까요?

어쨌든 누군가 도와 드릴 수 있습니까? 어떤 아이디어라도 왜 입력이 가능하다는 로그가 나오는데 오디오를 얻을 수 없습니까? (마이크가 ofc를 사용 중입니다)

답변

1

저는 cordova-plugin-audioinput의 제작자입니다. 마이크의 원시 오디오 데이터에 액세스 할 수 있도록 해주는 Cordova 플러그인입니다. PitchDetect 라이브러리를 수정하지 않으면 audioinput 플러그인과 함께 사용할 수 없습니다. PitchDetect 라이브러리는 이전 Android 웹 뷰 (< 5.0)에서 지원되지 않는 getUserMedia API를 사용하며 iOS 웹 뷰에서는 지원되지 않습니다. 반면에 cordova-plugin-audioinput은 iOS 및 이전 Android 웹뷰에서 마이크 액세스를 가능하게하기 위해 특별히 제작되었습니다. 안드로이드에 특정 문제를 해결할 수

빠른 방법 :

인텔 XDK는 블링크의 최신 버전 (오픈 소스 버전을 사용할 수있는 횡단 보도의 웹보기, 안드로이드 애플 리케이션을 구축 지원 Chrome은 웹 오디오 API와 getUserMedia API를 모두 지원합니다.

, 당신의 빌드에 횡단 보도를 가능하게하는 인텔 XDK의 빌드 설정에 안드로이드에 대한 화면을 이동하고 는 "횡단 보도에 최적화"고 확인란이 선택되어 있는지 확인합니다. Intel XDK와 함께 Crosswalk를 사용하는 방법에 대한 자세한 내용은 https://software.intel.com/en-us/xdk/blog/what-is-crosswalk을 참조하십시오.

나는 앱이 또한 마이크에 액세스 할 수있는 권한이 필요하기 때문에 인텔 XDK 빌드 구성의 "권한을 추가" 필드에 "android.permission.RECORD_AUDIO"를 입력 할 것이라고 믿는다. 당신은, 다른 한편으로는, PitchDetect 라이브러리와 함께 코르도바 - 플러그인 - audioinput를 사용하려면 PitchDetect

과 함께 코르도바 - 플러그인 - audioinput를 사용

(예를 들어, 당신은 당신의 응용 프로그램을 원하는 경우 getUserMedia API를 지원하지 않는 iOS에서도 작동합니다.) 일부 수정을해야합니다. 특히, 당신은에서 getUserMedia에 의존하지 않도록 PitchDetect의 toggleLiveInput 기능을 변경해야하지만, 대신에 시작 (정지)를 audioinput 플러그인을하고 PitchDetect 분석기에 audioinput 플러그인을 연결 :

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(); 

위의 예는 이전 Android 버전에서 제한적으로 지원되는 Web Audio API에 의존합니다. Android 5 이상은 잘 작동합니다. 여러 브라우저에서 웹 오디오 API 지원에 대한 자세한 내용은 http://caniuse.com/#feat=audio-api을 참조하십시오.

나는 이것이 도움이되고 행운이 있기를 바랍니다.

+0

안녕하세요. 도와 주셔서 감사합니다. 나는 정확히 당신이 말한 것을했습니다 (위 코드를 복사했습니다). 그러나 autoCorrelate 함수는 항상 -1을 반환하는 것으로 나타났습니다. "if (rms <0.01)가 -1을 반환하기 때문에 -1을 반환합니다." (그것은 "// 신호가 충분하지 않습니다."라고 주석을 달았습니다. 뭔가 잘못되었다고 생각합니다. 도와 주실 수 있습니까? 왜 이런 일이 일어나고 있습니까? – DigitalEvolution

관련 문제