[JAVA] [Android] Comment détecter le changement de volume (= pression sur le bouton de volume)

C'est une méthode héritée qui existe depuis longtemps, mais je vais l'écrire car les informations fournies par Google sont un peu impraticables.

Méthode

Il y a AudioManager.VOLUME_CHANGED_ACTION (android.media.VOLUME_CHANGED_ACTION) comme intention qui détecte lorsque le volume est modifié ou que le bouton de volume est enfoncé. Tout ce que vous avez à faire est de le recevoir avec le récepteur de diffusion.

Jusqu'à présent, les informations qui sortent immédiatement après google, mais AudioManager.VOLUME_CHANGED_ACTION doit être conscient des points suivants.

--Plusieurs événements sont notifiés par une opération de changement de volume --AudioManager.STREAM_MUSIC, etc. Notifié pour chaque STREAM, et même si le volume ne change pas --L'interface utilisateur du volume est affichée lorsque le premier bouton est actionné alors que l'écran est allumé, et l'événement n'est pas notifié car le volume ne change pas réellement. --Lorsque l'écran est éteint, l'événement ne sera pas notifié même si vous appuyez sur le bouton sauf si vous jouez de la musique avec une application musicale, etc. --Parce que le volume ne change pas

Code source

AndroidManifest.xml


<receiver android:name=".VolumeChangedActionReceiver">
    <intent-filter>
        <actionandroid:name="android.media.VOLUME_CHANGED_ACTION" />
    </intent-filter>
</receiver>

VolumeChangedActionReceiver.java


public static class VolumeChangedActionReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        if (intent.getAction().equals("android.media.VOLUME_CHANGED_ACTION")) {
            int newVolume = intent.getIntExtra("android.media.EXTRA_VOLUME_STREAM_VALUE", 0);
            int oldVolume = intent.getIntExtra("android.media.EXTRA_PREV_VOLUME_STREAM_VALUE", 0);
            int streamType = intent.getIntExtra("android.media.EXTRA_VOLUME_STREAM_TYPE", 0);

            if (streamType == AudioManager.STREAM_MUSIC) {
                // TODO: write your code
            }
        }
    }
}

Recommended Posts

[Android] Comment détecter le changement de volume (= pression sur le bouton de volume)
Comment détecter les conflits de microphone sur Android
Android Donner facilement une «pression» sur un bouton
[Android Studio] Comment changer TextView en n'importe quelle police [Java]
Comment "évider" une vue sur Android
Comment changer kube-proxy en mode ipvs.
[Android] Comment créer un fragment de dialogue
Comment passer du HTML à Haml
Comment changer le nom de l'application dans les rails
Comment utiliser le volume nommé dans docker-compose.yml
[Android] Comment gérer les thèmes sombres
Comment utiliser ExpandableListView dans Android Studio
[Android] Comment convertir une chaîne de caractères en resourceId
Comment changer l'éditeur de texte par défaut du Finder en Atom
Comment créer un plug-in natif Unity (version Android)
[Rails] Comment créer un bouton de partage Twitter
Comment écrire React Native Bridge ~ Version Android ~
Comment créer un lecteur de musique Android imposant
Comment changer l'action avec plusieurs boutons d'envoi
[Android / Java] Configurer un bouton pour revenir à Fragment
[Ruby on Rails] Comment changer le nom de la colonne
[Android Studio] [Java] Comment réparer l'écran verticalement
[Rails] Comment changer le nom de colonne de la table
Comment utiliser Truth (bibliothèque d'assertions pour Java / Android)
Comment passer d'Oracle Java 8 à Adopt Open JDK 9
[Android] Comment obtenir la langue de réglage du terminal
Comment empêcher editTextPreference de Android PreferenceFragmentCompat de se rompre
[Débutant] Comment utiliser la conception Modifier les paramètres depuis l'introduction
Comment activer le bouton d'envoi à chaque fois avec jquery
[Linux] Commentaire facile! Comment vérifier et modifier les autorisations
Comment configurer le mappeur Android OU "Orma" (Kotlin)
Comment effectuer un processus spécifique lorsque le bouton de retour est enfoncé dans le fragment Android