[JAVA] So erkennen Sie Mikrofonkonflikte unter Android

Aufgabe

Wenn ich versuche, das Mikrofon unter Android zu verwenden, kann ich nicht aufnehmen, wenn eine andere App es bereits verwendet. Wenn Sie einfach nicht aufnehmen können, bedeutet dies, dass der Ton, den Sie aufnehmen möchten, zu der App fließt, die das Mikrofon hält, wenn Sie nicht vorsichtig sind. Wenn VoIP-Apps gleichzeitig ausgeführt werden, kann die schlimmste Situation sein, dass die Stimme nur eine andere Person erreicht, nicht die Person, mit der Sie sprechen. .. ..

Was du machen willst

Erkennt, dass Ihre App das Mikrofon nicht verwenden kann, und beendet die Aufnahme.

Wie soll man antworten

Der Fluss ist bei der Aufnahme wie folgt. AudioRecord

AudioRecord audioRecord = new AudioRecord(,,,,);
audioRecord.setRecordPositionupdateListener(new AudioRecord.OnRecordPositionupdateListener() {
    //Verarbeitung für jeden Frame
    @Override
    public void onPeriodicNotification(AudioRecord recorder) {
        audioRecord.read();
    }
});
audioRecord.setPositionNotificationPeriod();
audioRecord.startRecording();
audioRecord.read();
・
・
・
audioRecord.stop();

Es scheint jedoch, dass keine der Funktionen einen Fehler zurückgibt, selbst wenn andere Apps das Mikrofon verwenden. .. ..

Es gab jedoch einen Unterschied mit und ohne Konkurrenz um die Verwendung von Mikrofonen. Wenn Sie das Mikrofon nicht bekommen können, scheint es nicht onPeriodicNotification aufzurufen, was der Rückruf für die Frame-für-Frame-Verarbeitung ist.

Wenn onPeriodicNotification nach einer bestimmten Zeit nicht aufgerufen wird, kann daher festgestellt werden, dass eine andere App das Mikrofon erworben hat.

Bestätigter Inhalt / Umgebung

** Inhalt ** Stellen Sie sicher, dass onPeriodicNotification während eines Online-Anrufs, Facebook Messenger, nicht aufgerufen wird Umgebung Nexus 6 (7.1.1) , Nexus 7 (6.0.1)

Bemerkungen

――Bitte lassen Sie mich wissen, ob es einen besseren Weg gibt! ――Bitte lassen Sie mich wissen, wenn Sie es mit dieser Methode nicht erkennen können!

Recommended Posts

So erkennen Sie Mikrofonkonflikte unter Android
Wie man eine Ansicht auf Android "aushöhlt"
[Android] So erkennen Sie Lautstärkeänderungen (= Drücken der Lautstärketaste)
Wie man mit Heroku einsetzt
So stellen Sie Laravel für CentOS 7 bereit
Verwendung von Ruby on Rails
So stellen Sie Bootstrap auf Rails bereit
So führen Sie JavaFX unter Docker aus
Verwendung von Bio-Formaten unter Ubuntu 20.04
So installieren Sie MariaDB 10.4 unter CentOS 8
So installieren Sie WildFly unter Ubuntu 18.04
[Android] So erstellen Sie ein Dialogfragment
So überprüfen Sie, ob Java auf einem Mac installiert ist
Ein Memorandum zur Verwendung von Eclipse
Verwendung von Apache Derby unter Eclipse
Beispiel für die Anzeige von (Head-up-) Benachrichtigungen auf Android
[Android] Wie man mit dunklen Themen umgeht
So installieren Sie Eclipse (Photon) auf Ihrem Mac
Schritte zum Veröffentlichen einer Anwendung auf Heroku
So wechseln Sie Java-Versionen auf dem Mac
So installieren Sie Beta PHP8.0 unter CentOS8
[Ruby on Rails] Verwendung von redirect_to
So installieren Sie kafkacat unter Amazon Linux2
Verwendung von ExpandableListView in Android Studio
[Android] So aktivieren / deaktivieren Sie das Benachrichtigungsfeld mit StatusBarManager
Android 11 unterstützt Reiwa standardmäßig
[Android] So konvertieren Sie eine Zeichenfolge in resourceId
So installieren Sie Netzwerktreiber unter eigenständigem Ubuntu
So speichern Sie Bilder auf Heroku in S3 unter AWS
Hinweise zur Verwendung der einzelnen JUnit-Regeln
Wie erstelle ich Unity Native Plugin (Android-Version)
Beachten Sie, wie Sie auf Heroku bereitgestelltes MySQL zurücksetzen können
So installieren Sie mehrere JDKs unter Ubuntu 18.04 LTS
[Rails MySQL] So setzen Sie die Datenbank auf Heroku zurück
Wie schreibe ich React Native Bridge ~ Android-Version ~
So erstellen Sie eine Pytorch-Umgebung unter Ubuntu
[Java] Memo zum Schreiben der Quelle
So führen Sie NullpoMino 7.5.0 unter Ubuntu 20.04.1 64-Bit-Version aus
Hinweise zum Erstellen von Burp Suite-Erweiterungen