Android 4.x RemoteControlClient.setTransportControlFlags()不工作?

我正在尝试使用RemoteControlClient类来支持与我的应用程序的锁屏播放器。 一个问题是设置传输控制标志看起来好像不能正常工作。

例如,我试图只显示一个播放/停止图标没有上一个/下一个:

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

这显示了以前的图标和暂停图标! 为什么?

如果按停止/播放button时,情况会变得更糟,您只有在获取KEYCODE_MEDIA_STOPKEYCODE_MEDIA_PLAY时才会收到KEYCODE_MEDIA_PLAY

如果我发现我正确地做到这一点,这是令人沮丧的Android开发不佳。

Solutions Collecting From Web of "Android 4.x RemoteControlClient.setTransportControlFlags()不工作?"

由于Android中的错误,FLAG_KEY_MEDIA_STOP从不显示停止状态,因此报告如下: https : //code.google.com/p/android/issues/detail? id=29920

如果使用标志PLAY_PAUSE则不应该产生KEYCODE_MEDIA_STOP事件。 为什么呢? 这是一个播放/暂停切换操作,可以达到预期效果。 存储媒体播放器的状态取决于您的应用程序。

如果我正确理解文档,只有使用标志FLAG_KEY_MEDIA_PLAY和FLAG_KEY_MEDIA_PAUSE,才能获得KEYCODE_MEDIA_PLAY或KEYCODE_MEDIA_PAUSE。 但是,android可能是“聪明的”,并把它翻译成切换。 对此我不确定。

使用FLAG_KEY_MEDIA_PLAY_PAUSE

oRemoteControlClient.setTransportControlFlags(RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE);

并撒谎到RemoteControlClient 😉

告诉他这个stream缓冲,它会显示停止button!

oRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_BUFFERING);

干杯