2011-06-15 11 views
5

Quiero enviar una transmisión (¿o es una intención?) De mi aplicación que irá a la siguiente pista de un reproductor de música si algo está sonando, o reproduce/pausa, etc. Aquí está el código que tengo así ahora:Android usando intenciones para controlar el reproductor multimedia?

final Intent i = new Intent(Intent.ACTION_MEDIA_BUTTON); 
    i.putExtra(Intent.EXTRA_KEY_EVENT, KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE); 
    context.sendBroadcast(i); 

Sin embargo, por lo que puedo decir de mis pruebas, este fragmento de código no hace absolutamente nada. Por cierto, puse este código en una función y lo llamo desde un servicio en segundo plano, en caso de que sea relevante.

Entonces, ¿cómo puedo hacer que funcione esta funcionalidad? Si no es posible, por alguna razón, estoy abierto a sugerencias para soluciones alternativas o alternativas.

Muy apreciado, gracias.

+0

¿Ha aceptado los permisos en la aplicación de destino? –

Respuesta

7

Está utilizando EXTRA_KEY_EVENT incorrectamente. Ver Intent#EXTRA_KEY_EVENT. Necesita crear una instancia de un nuevo objeto KeyEvent con el código clave KEYCODE_MEDIA_PLAY_PAUSE. Solo pasar el código clave en la intención es pasarlo como un Entero, no como un KeyEvent.

This thread muestra un ejemplo de creación del objeto KeyEvent.

4
Intent i = new Intent(Intent.ACTION_MEDIA_BUTTON); 
i.putExtra(Intent.EXTRA_KEY_EVENT,new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_MEDIA_NEXT)); 
sendOrderedBroadcast(i, null); 

i = new Intent(Intent.ACTION_MEDIA_BUTTON); 
i.putExtra(Intent.EXTRA_KEY_EVENT,new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_MEDIA_NEXT)); 
sendOrderedBroadcast(i, null); 
Cuestiones relacionadas