2012-03-15 23 views
9

estoy tratando de utilizar la clase RemoteControlClient para apoyar el jugador pantalla de bloqueo con mi aplicación. Un problema es que configurar las banderas de control de transporte parece que no funcionan correctamente.RemoteControlClient.setTransportControlFlags Android 4.x() no funciona?

Por ejemplo, yo estoy tratando de mostrar sólo un icono de reproducción/parada sin prev/siguiente:

mRemoteControlClient.setTransportControlFlags(
         RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE | 
         RemoteControlClient.FLAG_KEY_MEDIA_STOP); 

Esto muestra un icono anterior y pausa icono! ¿Por qué?

Para empeorar las cosas al presionar el botón de detener/reproducir solo recibirá KEYCODE_MEDIA_PLAY_PAUSE cuando debería recibir KEYCODE_MEDIA_STOP o KEYCODE_MEDIA_PLAY.

Este es un pobre desarrollo frustrante en el lado de Android si me entero de que estoy haciendo esto correctamente.

+1

he notado el mismo problema con el botón anterior, y no parece ser una manera de evitarlo. Para FLAG_KEY_MEDIA_PLAY_PAUSE, FLAG_KEY_MEDIA_STOP y KEYCODE_MEDIA_PLAY, parece FLAG_KEY_MEDIA_PLAY_PAUSE se utiliza siempre, no importa lo que usted especifique. Sin embargo, se espera que reciba KEYCODE_MEDIA_PLAY_PAUSE de FLAG_KEY_MEDIA_PLAY_PAUSE. Si funcionó como debería, le gustaría especificar FLAG_KEY_MEDIA_PLAY para recibir KEYCODE_MEDIA_PLAY. para los medios de comunicación botones equivocados –

+0

Ver http://code.google.com/p/android/issues/detail?id=29920. – svenmeier

+0

Gracias por la URL del error. – Jona

Respuesta

0

El FLAG_KEY_MEDIA_STOP nunca muestra se detiene debido a error en Android como se informó aquí: https://code.google.com/p/android/issues/detail?id=29920

Si utiliza la bandera es PLAY_PAUSE no debe producir un evento KEYCODE_MEDIA_STOP. ¿Por qué lo haría? Es una acción de alternar reproducción/pausa que hace lo que se pretende. Depende de su aplicación almacenar el estado de su reproductor multimedia.

Si entiendo la documentación correctamente, puede obtener KEYCODE_MEDIA_PLAY o KEYCODE_MEDIA_PAUSE solo si usa los indicadores FLAG_KEY_MEDIA_PLAY y FLAG_KEY_MEDIA_PAUSE. Pero Android podría ser "inteligente" y traducirlo a un alternar. No estoy seguro de eso.

0

Uso del FLAG_KEY_MEDIA_PLAY_PAUSE

oRemoteControlClient.setTransportControlFlags(RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE);

y mentir a la RemoteControlClient ;-)

Dile que la corriente se almacena en búfer y se mostrará el botón de parada!

oRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_BUFFERING);

Saludos