2016-12-05 5 views
2

(Aus irgendeinem Grund kann ich keine Antwort auf dieses Problem erhalten ...)Holen Sie sich Mikrofon Audio in Android. AudioContext

Hallo. Ich muss auf Android-Mikrofon zugreifen. Ich machte eine Tuner-App im Internet mit dieser: https://github.com/cwilso/PitchDetect. Funktioniert gut.

Allerdings, wenn ich die App zu Android mit IntelXDK und Cordova-Plugins bauen, kann ich keine Mikrofon-Eingang bekommen. Ich bin mir nicht sicher, ob ich das verwenden muss: https://github.com/edimuj/cordova-plugin-audioinput. Scheint wie der richtige Weg, um den AudioContext in Android zu bekommen. Außerdem wird bei der Installation der App eine Warnung angezeigt, dass sie eine Autorisierung erteilen muss. Wahrscheinlich ist es der richtige Weg, oder?

Wie kann mir jemand helfen? Irgendeine Idee, warum, obwohl ich Protokolle bekomme, die sagen, dass die Eingabe aktiviert ist, kann ich kein Audio bekommen? (Mikrofon funktioniert o)

Antwort

1

Ich bin der Schöpfer von Cordova-Plugin-Audioinput, ein Cordova-Plugin, mit dem Sie Zugriff auf die Roh-Audio-Daten vom Mikrofon erhalten. Ohne die PitchDetect-Bibliothek zu ändern, können Sie sie nicht zusammen mit dem audioinput-Plugin verwenden. Die PitchDetect-Bibliothek basiert auf der getUserMedia-API, die auf älteren Android-Webansichten (< 5.0) nicht unterstützt wird und überhaupt nicht auf iOS-Webansichten unterstützt wird. Der cordova-plugin-audioinput hingegen wurde speziell dafür entwickelt, den Mikrofonzugriff sowohl auf iOS als auch auf älteren Android-Webviews zu ermöglichen.

Eine schnelle Art und Weise, die Ihr spezielles Problem auf Android lösen könnte:

Der Intel XDK unterstützt Android-Apps mit dem Fußgängerübergang webview Aufbau, mit dem Sie eine neuere Version von Blink verwenden können (Die Open-Source-Version von Chrome), die sowohl die Web Audio API als auch die getUserMedia API unterstützt.

Damit Fußgängerübergang auf baut, gehen Sie zu den Build-Einstellungen Bildschirm für Android im Intel XDK und sicherzustellen, dass die „mit Zebrastreifen optimieren“ Kontrollkästchen aktiviert ist. Weitere Informationen zur Verwendung von Crosswalk mit dem Intel XDK: https://software.intel.com/en-us/xdk/blog/what-is-crosswalk.

Ich glaube, dass die App auch die Erlaubnis benötigt, um das Mikrofon zugreifen, so geben Sie "android.permission.RECORD_AUDIO" im "Add permission" Feld der Intel XDK Build-Konfiguration.

Mit cordova-Plugin-Audioeingang zusammen mit PitchDetect

Wenn Sie, auf der anderen Seite, den cordova-Plugin-Audioeingang zusammen mit der PitchDetect Bibliothek (zum Beispiel verwenden mögen, wenn Sie möchten, dass Ihre App funktioniert auch in iOS, das die getUserMedia-API nicht unterstützt), Sie müssen einige Änderungen vornehmen; Insbesondere würden Sie die toggleLiveInput Funktion von PitchDetect ändern müssen, so dass es nicht auf getUserMedia angewiesen ist, sondern beginnt (und endet), um die Audioeingang Plugin und verbindet den Audioeingang Plugin zum PitchDetect Analysator:

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

Bitte beachten Sie, dass das obige Beispiel immer noch auf der Web Audio API basiert, die in älteren Android-Versionen nur eingeschränkt unterstützt wird; Android 5+ sollte jedoch gut funktionieren. Weitere Informationen zur Web Audio-API-Unterstützung für verschiedene Browser finden Sie unter: http://caniuse.com/#feat=audio-api.

Ich hoffe, das hilft und viel Glück!

+0

Hey. Danke für die Unterstützung. Ich habe genau das gemacht, was du gesagt hast (kopiere den obigen Code). Allerdings habe ich festgestellt, dass die AutoCorrelate-Funktion immer -1 zurückgibt, was nicht gut ist. Es gibt -1 zurück, weil "if (rms <0,01) -1 zurückgibt"; (Es wird kommentiert "// nicht genug Signal". Ich denke, etwas stimmt nicht. Könnten Sie mir helfen? Warum passiert das? – DigitalEvolution

Verwandte Themen