[JAVA] Comment détecter les conflits de microphone sur Android

Tâche

Lorsque j'essaie d'utiliser le microphone sur Android, je ne peux pas enregistrer si une autre application l'utilise déjà. Si vous ne pouvez tout simplement pas enregistrer, cela signifie que le son que vous avez l'intention d'enregistrer s'écoule vers l'application qui tient le microphone si vous ne faites pas attention. Si les applications VoIP fonctionnent en même temps, la pire situation peut être que la voix n'atteigne qu'une autre personne, pas la personne à qui vous parlez. .. ..

Chose que tu veux faire

Détecte que votre application ne peut pas utiliser le microphone et arrête l'enregistrement.

Comment répondre

Le déroulement est le suivant lors de l'enregistrement. AudioRecord

AudioRecord audioRecord = new AudioRecord(,,,,);
audioRecord.setRecordPositionupdateListener(new AudioRecord.OnRecordPositionupdateListener() {
    //Traitement pour chaque image
    @Override
    public void onPeriodicNotification(AudioRecord recorder) {
        audioRecord.read();
    }
});
audioRecord.setPositionNotificationPeriod();
audioRecord.startRecording();
audioRecord.read();
・
・
・
audioRecord.stop();

Cependant, il semble qu'aucune des fonctions ne renvoie d'erreur, même si d'autres applications utilisent le microphone. .. ..

Cependant, il y avait une différence avec et sans concurrence pour l'utilisation du microphone. Si vous ne pouvez pas obtenir le micro, il ne semble pas appeler onPeriodicNotification, qui est le rappel pour le traitement image par image.

Par conséquent, si onPeriodicNotification n'est pas appelé après un certain laps de temps, il semble qu'il puisse être déterminé qu'une autre application a acquis le microphone.

Contenu / environnement confirmé

** Contenu ** Assurez-vous que onPeriodicNotification n'est pas appelé lors d'un appel en ligne, Facebook Messenger environnement Nexus 6 (7.1.1) , Nexus 7 (6.0.1)

Remarques

――Veuillez me faire savoir s'il existe un meilleur moyen! ――Veuillez me faire savoir si vous ne pouvez pas le détecter par cette méthode!

Recommended Posts

Comment détecter les conflits de microphone sur Android
Comment "évider" une vue sur Android
[Android] Comment détecter le changement de volume (= pression sur le bouton de volume)
Comment déployer avec heroku
Comment déployer Laravel sur CentOS 7
Comment utiliser Ruby on Rails
Comment déployer Bootstrap sur Rails
Pour exécuter JavaFX sur Docker
Comment utiliser les bio-formats sur Ubuntu 20.04
Comment installer MariaDB 10.4 sur CentOS 8
Comment installer WildFly sur Ubuntu 18.04
[Android] Comment créer un fragment de dialogue
Comment vérifier Java installé sur Mac
Un mémorandum sur l'utilisation d'Eclipse
Comment utiliser Apache Derby sur Eclipse
Exemple d'affichage des notifications (tête haute) sur Android
[Android] Comment gérer les thèmes sombres
Comment installer Eclipse (Photon) sur votre Mac
Étapes pour publier une application sur Heroku
Comment changer de version de Java sur Mac
Comment installer la beta php8.0 sur CentOS8
[Ruby on Rails] Comment utiliser redirect_to
Comment installer kafkacat sur Amazon Linux2
Comment utiliser ExpandableListView dans Android Studio
[Android] Comment activer / désactiver le panneau de notification à l'aide de StatusBarManager
Android 11 prendra en charge Reiwa en standard
[Android] Comment convertir une chaîne de caractères en resourceId
Comment installer les pilotes réseau sur Ubuntu autonome
Comment enregistrer des images sur Heroku dans S3 sur AWS
Notes sur l'utilisation de chaque règle de JUnit
Comment créer un plug-in natif Unity (version Android)
Remarquez comment restaurer Mysql déployé sur Heroku
Comment installer plusieurs JDK sur Ubuntu 18.04 LTS
[Rails MySQL] Comment réinitialiser la base de données sur heroku
Comment écrire React Native Bridge ~ Version Android ~
Comment créer un environnement Pytorch sur Ubuntu
[Java] Mémo sur la façon d'écrire la source
Comment exécuter NullpoMino 7.5.0 sur la version 64 bits d'Ubuntu 20.04.1
Remarques sur la création d'extensions Burp Suite