2012-03-15 14 views
9

Sto provando a utilizzare la classe RemoteControlClient per supportare il lettore della schermata di blocco con la mia app. Un problema è che l'impostazione dei flag di controllo del trasporto sembra che non funzionino correttamente.Android 4.x RemoteControlClient.setTransportControlFlags() non funziona?

Per esempio io sto cercando di mostrare solo un'icona di riproduzione/stop senza prev/next:

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

Questo mostra l'icona di un precedente e mettere in pausa l'icona! Perché?

Per rendere le cose ancora peggiori quando si preme il pulsante Stop/Riproduci, si riceve solo KEYCODE_MEDIA_PLAY_PAUSE quando si dovrebbe ottenere KEYCODE_MEDIA_STOP o KEYCODE_MEDIA_PLAY.

Questo sta frustrando lo scarso sviluppo su Android se scopro che lo sto facendo correttamente.

+1

ho notato lo stesso problema con il pulsante precedente, e non ci non sembra essere un modo intorno ad esso. Per FLAG_KEY_MEDIA_PLAY_PAUSE, FLAG_KEY_MEDIA_STOP e KEYCODE_MEDIA_PLAY, sembra che FLAG_KEY_MEDIA_PLAY_PAUSE venga sempre utilizzata indipendentemente da ciò che viene specificato. Tuttavia, dovrebbe essere previsto che venga ricevuto KEYCODE_MEDIA_PLAY_PAUSE da FLAG_KEY_MEDIA_PLAY_PAUSE. Se ha funzionato come dovrebbe, devi specificare FLAG_KEY_MEDIA_PLAY per ricevere KEYCODE_MEDIA_PLAY. –

+0

Vedi http://code.google.com/p/android/issues/detail?id=29920 per i pulsanti multimediali errati. – svenmeier

+0

Grazie per l'URL del bug. – Jona

risposta

0

La FLAG_KEY_MEDIA_STOP non mostra mai fermarsi a causa di bug in Android come riportato qui: https://code.google.com/p/android/issues/detail?id=29920

Se si utilizza il PLAY_PAUSE bandiera è non dovrebbe produrre un evento KEYCODE_MEDIA_STOP. Perché dovrebbe? È un'azione di commutazione play/pausa che fa ciò a cui è destinata. Spetta alla tua applicazione memorizzare lo stato del tuo lettore multimediale.

Se comprendo correttamente la documentazione, è possibile ottenere KEYCODE_MEDIA_PLAY o KEYCODE_MEDIA_PAUSE solo se si utilizzano i flag FLAG_KEY_MEDIA_PLAY e FLAG_KEY_MEDIA_PAUSE. Ma Android potrebbe essere "intelligente" e tradurlo in un interruttore. Non ne sono sicuro.

0

Utilizzare il FLAG_KEY_MEDIA_PLAY_PAUSE

oRemoteControlClient.setTransportControlFlags(RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE);

e si trovano al RemoteControlClient ;-)

Digli il flusso è buffer e mostrerà il pulsante di arresto!

oRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_BUFFERING);

Acclamazioni

Problemi correlati