Estoy intentando poner en pausa la música que se está reproduciendo cuando el auricular está desenchufado.Intent.ACTION_HEADSET_PLUG se recibe cuando comienza la actividad
He creado un BroadcastReceiver que escucha los intentos de ACTION_HEADSET_PLUG y actúa sobre ellos cuando el estado adicional es 0 (para desenchufado). Mi problema es que un intento ACTION_HEADSET_PLUG es recibido por mi BroadcastReceiver cada vez que se inicia la actividad. Este no es el comportamiento que esperaría. Esperaría que la intención se dispare solo cuando el auricular esté enchufado o desenchufado.
¿Hay alguna razón por la cual la intención ACTION_HEADSET_PLUG se detecta inmediatamente después de registrar un receptor con ese IntentFilter? ¿Hay una manera clara de que pueda trabajar con este problema?
Supongo que dado que el reproductor de música predeterminado implementa una funcionalidad similar cuando el auricular está desenchufado, sería posible.
¿Qué me estoy perdiendo?
Este es el código de registro
registerReceiver(new HeadsetConnectionReceiver(),
new IntentFilter(Intent.ACTION_HEADSET_PLUG));
Ésta es la definición de HeadsetConnectionReceiver
public class HeadsetConnectionReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
Log.w(TAG, "ACTION_HEADSET_PLUG Intent received");
}
}
Una solución alternativa sería utilizar el método removeStickyBroadcast(), para los casos en los que no puede simplemente ignorar los comandos cuando se está ejecutando su servicio. – greg7gkb
Creo que una solución aún mejor es usar [isInitialStickyBroadcast()] (http://developer.android.com/reference/android/content/BroadcastReceiver.html#isInitialStickyBroadcast%28%29) en su receptor. Esto no requiere la definición del permiso para eliminar difusiones adhesivas, y no causará efectos secundarios a otras aplicaciones. – amram99
Hola otra vez Doug. Pude haber malinterpretado algo acerca de este intento, el sistema receptor que tiene Android. Pero, ¿cómo tienes acceso a EsPlaying, reconocería que están en tu actividad original? :-) –