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.
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
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