Estudié el intento ACTION_MEDIA_BUTTON
y estoy tratando de usarlo e interceptar las pulsaciones del botón y presentarlas en la pantalla con un brindis. Me he registrado el receptor para interceptar dos intenciones:¿Cómo puedo interceptar el botón para presionar los auriculares en Android?
ACTION_HEADSET_PLUG
- conectar el auricular queACTION_MEDIA_BUTTON
- recibir las pulsaciones de botón
Esto se hace en mi actividad principal:
IntentFilter mediaFilter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
mediaFilter.setPriority(10000);
registerReceiver(_receiver, new IntentFilter(Intent.ACTION_HEADSET_PLUG));
registerReceiver(_receiver, mediaFilter);
Esta es la parte de la r eceiver que maneja las pulsaciones de botón:
if (action.equals(Intent.ACTION_HEADSET_PLUG))
{
Toast.makeText(context, "earphones activity",Toast.LENGTH_SHORT).show();
if (intent.getExtras().getInt("state")==1)//if plugged
Toast.makeText(context, "earphones plugged",Toast.LENGTH_LONG).show();
else Toast.makeText(context, "earphones un-plugged",Toast.LENGTH_LONG).show();
}
else
if (action.equals(Intent.ACTION_MEDIA_BUTTON))
{
Toast.makeText(context, "button pressed",Toast.LENGTH_LONG).show();
key=intent.getExtras().getString("EXTRA_KEY_EVENT");
Toast.makeText(context, key,Toast.LENGTH_LONG).show();
}
Ahora la parte que se encarga de los auriculares plug-in y la extracción funciona bien, pero la parte que intercepta el botón de prensa no lo es.
¿Hay alguna razón por la que el código que maneja el ACTION_MEDIA_BUTTON
no funcione?
¿Hay algún permiso especial que necesite para interceptar tal intento?
Estoy usando un Samsung Galaxy S2 para probar el código.
He visto todas las publicaciones similares y he intentado todo. Lamentablemente, nada parece funcionar.
¿con qué dispositivo está probando esto? – slayton
samsung galaxy s 2 –
No estoy seguro, pero podría ser que TouchWiz no implementa correctamente el intento ANDROID_MEDIA_BUTTON ... – slayton