Android 4.x的RemoteControlClient.setTransportControlFlags()无法正常工作?

9

我正在尝试使用RemoteControlClient类支持我的应用程序的锁屏播放器。其中一个问题是设置传输控制标志似乎无法正常工作。

例如,我只想显示播放/停止图标而不是上一个/下一个:

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

这显示了先前的图标和暂停图标!为什么?
当按下停止/播放按钮时,您只会收到KEYCODE_MEDIA_PLAY_PAUSE,而应该得到KEYCODE_MEDIA_STOPKEYCODE_MEDIA_PLAY。这使情况变得更糟。
如果我发现自己做得正确,这表明Android方面的开发存在问题,这很令人沮丧。

1
我注意到之前按钮也有同样的问题,似乎没有解决办法。对于FLAG_KEY_MEDIA_PLAY_PAUSE、FLAG_KEY_MEDIA_STOP和KEYCODE_MEDIA_PLAY,无论你指定什么,似乎都会使用FLAG_KEY_MEDIA_PLAY_PAUSE。然而,应该期望从FLAG_KEY_MEDIA_PLAY_PAUSE接收KEYCODE_MEDIA_PLAY_PAUSE。如果它按照预期工作,你想要指定FLAG_KEY_MEDIA_PLAY来接收KEYCODE_MEDIA_PLAY。 - Andy McSherry
请参见 http://code.google.com/p/android/issues/detail?id=29920 了解有关错误媒体按钮的信息。 - svenmeier
2个回答

0
使用FLAG_KEY_MEDIA_PLAY_PAUSE。

oRemoteControlClient.setTransportControlFlags(RemoteControlClient.FLAG_KEY_MEDIA_PLAY_PAUSE);

并欺骗RemoteControlClient ;-)

告诉他流正在缓冲,它将显示停止按钮!

oRemoteControlClient.setPlaybackState(RemoteControlClient.PLAYSTATE_BUFFERING);

干杯


0

由于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可能会“聪明地”将其转换为切换操作。 我对此不太确定。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接