2016-01-14 20 views
5

Meine Anwendung wird in Abhängigkeit von Proben absolute Amplituden Volumen der aufgenommenen Audio-Messung.Android Mikrofonempfindlichkeit Wechsel nach Telefonanruf

Ich habe bemerkt, und unerwartetes Verhalten in android.media.AudioRecord von Android SDK. Lassen Sie uns folgende Fluss annehmen:

  1. Anwendung gestartet wird
  2. Audio Volumen gemessen wird
  3. Telefonanruf beantwortet wird/gewählt
  4. Audio Lautstärke gemessen um das Mikrofon

Der Lärm wird wird von TV mit konstanter Lautstärkeeinstellung erzeugt. Die für Punkt 2 gemessenen Werte liegen im Bereich [55-65] und die für Punkt 4 gemessenen Werte liegen im Bereich [15-25] (siehe Audiovisualisierung für 2. und 4. unten).

Ich verstehe, dass es muss eine Lautstärkeeinstellung im Gange sein, wenn Anruf erfolgt. Ist es möglich, diese Anpassungen zu überwachen oder sie los zu werden?

Ich habe versucht, Automatische Verstärkungsregelung, aber es ist nicht auf meinem Nexus 5 unterstützt, und ich will es nicht, da die Zielgeräte verwenden, ist es vielleicht nicht so gut unterstützen.

aktualisieren Diese Volumeneinstellung geschieht nicht erst nach Anruf. Ich habe gerade das gleiche Verhalten bemerkt, als das Telefon gerade auf dem Tisch lag und die Lautstärke gemessen hatte.

PCM audio before and after the phone call

Antwort

1

In Bezug auf Ressourcen, die Ihre Anwendung mit anderen Anwendungen (in dieser Angelegenheit das Mikrofon) teilen - Sie sie immer sorgfältig behandeln sollte und es Konfiguration annehmen während eines Telefonats oder einer anderen Nutzung ändern können wie Schalt zu einer anderen App, die das Mikrofon verwendet.

Anstatt zu versuchen, für Änderungen in der Verstärkung zu überwachen, die Wurzel oder anderen Rechten erfordern kann - ich einen anderen Ansatz nehmen würde und wie folgt vorgehen:

  1. Speichern, um die Mikrofonempfindlichkeitsstufe in einer Konfigurationsdatei (shared_prefs) in Ihrer Aufnahmeaktivität, wenn der Benutzer aufnimmt. Machen Sie dasselbe, wenn der Benutzer es während der Nutzung Ihrer App ändert.
  2. Im onResume proc Ihrer Aufnahme-Aktivität - das Mikrofon Empfindlichkeit Pegelwert laden und einstellen, bevor

zum Datensatz (How to adjust microphone sensitivity while recording audio in android - Solved) Fortsetzen Wenn ein Telefonanruf ist, dass Ihre App im Hintergrund wirft und die Kontrolle übernimmt Wenn das Mikrofon fertig ist, kehrt es in den Vordergrund zurück und behält die Mikrofonempfindlichkeit für die weitere Aufnahme bei.

Hoffe, das hilft.

+0

Sie haben völlig Recht mit gemeinsam genutzten Ressourcen wie Mikrofon vorsichtig zu sein. Was meinst du genau in 1.? Ich berechne die Lautstärke für jedes aufgenommene Sample, es ist keine UI-Einstellung. Die andere Sorge, die ich habe, ist, dass der Gewinn die Klangqualität nicht erhält. –

+1

Für 1 - speichern Sie die alle Mikrofoneinstellungen Sie für jede Aufnahme benötigen und es einmal kehrt Ihre App in den Vordergrund wiederherstellen. – FunkSoulBrother

+0

Danke für deine Ideen @FunkSoulBrother.Das sind gültige Vorschläge, aber das Hauptproblem für mich ist in einem ** Update ** Teil hervorgehoben. Die Sensitivitätsänderung trat bei mir ohne Telefonanruf ein - die App war im Vordergrund und das Telefon hatte nicht einmal eine SIM-Karte. Ich muss während der Aufnahme einen konstanten Qualitätssound liefern. –