Intent.ACTION_HEADSET_PLUG получено при запуске активности

Я пытаюсь приостановить воспроизведение музыки, когда гарнитура отключена.

Я создал BroadcastReceiver, который прослушивает намерения ACTION_HEADSET_PLUG и действует в соответствии с ними, когда состояние extra extra равно 0 (для отключенного). Моя проблема в том, что мой BroadcastReceiver получает намерение ACTION_HEADSET_PLUG всякий раз, когда начинается действие. Это не то поведение, которого я ожидал. Я ожидал, что Intent сработает только тогда, когда гарнитура подключена или отключена.

Есть ли причина, по которой намерение ACTION_HEADSET_PLUG перехватывается сразу после регистрации получателя с этим IntentFilter? Есть ли четкий способ решить эту проблему?

Я предполагаю, что, поскольку музыкальный проигрыватель по умолчанию реализует аналогичные функции, когда гарнитура отключена, это было бы возможно.

Что мне не хватает?

Это регистрационный код

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

Это определение HeadsetConnectionReceiver

public class HeadsetConnectionReceiver extends BroadcastReceiver {

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

}
13
задан Doug Miller 3 November 2010 в 23:03
поделиться