Ich versuche AVAudioRecorders Methode mediaPowerForChannel zu verwenden, um die Eingangspegel am Mikrofon für eine iPad / iPhone-App zu überwachen. Ich habe einen Callback, der das durchschnittliche Level in einer Schleife abfragt - auf dem iPhone funktioniert es gut und gibt vernünftige Level zurück, aber aus irgendeinem Grund gibt es auf dem iPad immer -120.0.
Hier ist ein Teil meines Setup-Codes:
%Vor%Sowie meine Aufnahmemethode:
%Vor%und ein bisschen der LevelTimer Callback:
%Vor%Wo auf dem iPhone die NSLog-Anweisung sinnvolle Werte zurückgibt und das iPad immer -120.0 zurückgibt.
Hinweis: Ich benutze dies innerhalb einer cocos2d-Anwendung. Aus irgendeinem Grund, wenn ich die aktuelle Szene auf dem iPad neu starte, geben die Mikrofonpegel korrekte Werte zurück.
Hat jemand irgendwelche Vorschläge? Ich bin hier ernsthaft ratlos. Danke!
Ich hatte das gleiche Problem. Ich fand die Einstellung der Kategorie auf AVAudioSessionCategoryPlayAndRecord behebt es:
%Vor%Ja, ich auch. Es gibt nur eine gemeinsame AVAudioSession. Die Einstellung der Kategorie wirkt sich auf alle Recorder und Player aus. Wenn Sie die Kategorie auf AVAudioSessionCategoryPlay in einem Bereich der App einstellen, werden beispielsweise Recorder in anderen Bereichen deaktiviert.
Sie müssen die AVAudioSession starten (dies sollte von der didMoveToview-Methode aus geschehen, dies könnte ein Grund für das Problem sein)
%Vor%und starten Sie den Recorder
%Vor%Und holen Sie sich die Dezibel, indem Sie
anrufen %Vor%von -120 (minimaler Wert) bis zu 0. Das Noise Level eines Cafés ist beispielsweise -20
Hier ist das detailliertere Beispiel Ссылка Hinweis: Verwenden Sie auch die Aktualisierungsmethode.
Tags und Links ios avfoundation avaudiorecorder avaudiosession