在 Android Auto Media 应用程序中播放音频时,如何控制何时在“媒体控制卡”中显示停止按钮和暂停按钮?
我在一个PlaybackState
对象中设置动作,然后在我的MediaSession
对象中设置它(这是一个非常简短的例子):
PlaybackState.Builder playbackState = new PlaybackState.Builder();
playbackState.setActions(PlaybackState.ACTION_PAUSE).build();
mMediaSession.setPlaybackState(playbackState);
我意识到动作值是各种动作组合的位掩码,但无论我输入什么,setActions
我都会得到一个停止按钮。
更新:这似乎是谷歌媒体浏览器服务模拟器的一个错误。一种解决方法是在再次运行应用程序之前通过选择设置 -> 应用程序 -> 媒体浏览器服务模拟器 -> 清除数据来清除应用程序的数据。我正在使用模拟器的 6.5.81 (1593596-030) 版本。我在物理 Nexus 7 上运行模拟器时也遇到了这个错误。
重现步骤:
- 运行 Google 的示例应用 Universal Music Player,点击 PLAY,会出现一个 PAUSE 按钮,正如预期的那样,因为
actions |= PlaybackState.ACTION_PAUSE
设置在MusicService.getAvailableActions()
. - 将行更改为
actions |= PlaybackState.ACTION_STOP
,运行应用程序,点击 PLAY,然后按预期出现一个 STOP 按钮。 - 将值改回
actions |= PlaybackState.ACTION_PAUSE
,运行应用程序,点击 PLAY,然后出现一个 STOP 按钮,这是一个意外行为。 - 您可以通过调试确认
actions
包含 PAUSE 而不是 STOP 的位掩码值。
注意:虽然显示了方形 STOP 按钮,但该按钮的行为是 PAUSE。
解决方法:
- 清除应用数据:设置 -> 应用程序 -> 媒体浏览器服务模拟器 -> 清除数据
- 在模拟器中再次运行 Universal Music Player 应用程序,点击 PLAY,PAUSE 按钮按预期出现。
更新#2:似乎一旦出现 STOP 按钮,PAUSE 按钮就再也不会出现,而且这种解决方法没有用。