2012-03-15 17 views
9

Próbuję użyć klasy RemoteControlClient do obsługi odtwarzacza ekranu blokady z moją aplikacją. Jednym problemem jest to, że ustawienie flag sterujących transportem wygląda na to, że nie działają poprawnie.Android 4.x RemoteControlClient.setTransportControlFlags() nie działa?

Na przykład staram się po prostu pokazać się ikona PLAY/STOP nie wstecz/dalej:

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

To pokazuje poprzednią ikonę i wstrzymać ikonę! Czemu?

Aby jeszcze bardziej pogorszyć sytuację po naciśnięciu przycisku stop/play, otrzymujesz tylko KEYCODE_MEDIA_PLAY_PAUSE, gdy powinieneś uzyskać KEYCODE_MEDIA_STOP lub KEYCODE_MEDIA_PLAY.

Jest to frustrujące, słabe opracowanie po stronie Androida, jeśli dowiem się, że robię to poprawnie.

+1

zauważyłem ten sam problem z poprzedniego przycisku, a nie wydaje się być sposób wokół niego. W przypadku FLAG_KEY_MEDIA_PLAY_PAUSE, FLAG_KEY_MEDIA_STOP i KEYCODE_MEDIA_PLAY, wydaje się, że FLAG_KEY_MEDIA_PLAY_PAUSE jest zawsze używana bez względu na to, co określisz. Należy się jednak spodziewać otrzymania KEYCODE_MEDIA_PLAY_PAUSE z FLAG_KEY_MEDIA_PLAY_PAUSE. Jeśli działało tak, jak powinno, musisz podać FLAG_KEY_MEDIA_PLAY, aby odebrać KEYCODE_MEDIA_PLAY. –

+0

Zobacz niewłaściwe przyciski multimediów na stronie http://code.google.com/p/android/issues/detail?id=29920. – svenmeier

+0

Dzięki za adres URL błędu. – Jona

Odpowiedz

0

FLAG_KEY_MEDIA_STOP nigdy nie pokazuje zatrzymać z powodu błędu w systemie Android jak podano tutaj: https://code.google.com/p/android/issues/detail?id=29920

Jeśli używasz flaga PLAY_PAUSE nie powinien wywoływać zdarzenie KEYCODE_MEDIA_STOP. Dlaczego miałby to robić? Jest to operacja przełączania odtwarzania/wstrzymania, która robi to, na co ma zamiar. Od aplikacji zależy przechowywanie stanu odtwarzacza multimedialnego.

Jeśli dobrze rozumiem dokumentację, możesz uzyskać KEYCODE_MEDIA_PLAY lub KEYCODE_MEDIA_PAUSE tylko wtedy, gdy używasz flag FLAG_KEY_MEDIA_PLAY i FLAG_KEY_MEDIA_PAUSE. Ale Android może być "sprytny" i przetłumaczyć go na przełącznik. Nie jestem tego pewien.

0

Użyj FLAG_KEY_MEDIA_PLAY_PAUSE

oRemoteControlClient.setTransportControlFlags(RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE);

i położyć do RemoteControlClient ;-)

Powiedz mu strumień jest buforowanie i pokaże przycisk stop!

oRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_BUFFERING);

Cheers