Intent.ACTION_HEADSET_PLUG est reçu lorsque l'activité démarre

Je suis en train de mettre en pause la musique en cours de lecture lorsque le casque est débranché.

J'ai créé un BroadcastReceiver qui écoute ACTION_HEADSET_PLUG les intentions et les actes sur eux quand la état supplémentaire est 0 (débranché). Mon problème est que ACTION_HEADSET_PLUG intention est reçu par mon BroadcastReceiver chaque fois que l'activité est commencé. Ce n'est pas le comportement que je m'attends. J'attendrais la volonté d'être déclenché que lorsque le casque est branché ou débranché.

Est-il une raison que l'ACTION_HEADSET_PLUG Intention est pris immédiatement après l'enregistrement d'un récepteur avec qui IntentFilter? Est-il une manière que je peux travailler avec ce problème?

Je suppose que depuis le lecteur de musique par défaut implémente une fonctionnalité similaire lorsque le casque est débranché qu'il serait possible.

Ce qui me manque?

C'est le code d'enregistrement

registerReceiver(new HeadsetConnectionReceiver(), 
                 new IntentFilter(Intent.ACTION_HEADSET_PLUG));

C'est la définition de HeadsetConnectionReceiver

public class HeadsetConnectionReceiver extends BroadcastReceiver {

    public void onReceive(Context context, Intent intent) {
        Log.w(TAG, "ACTION_HEADSET_PLUG Intent received");
    }

}

source d'informationauteur Doug Miller