我正在开发支持GoogleCast的应用程序。我正在使用CastCompanionLibrary,一切正常,但我的应用程序中有一个小问题。 我需要更改布局,以防用户通过HW按钮更改音量时出现。在我的应用程序中,布局如下所示:
此布局中有一个Cast图标,但它是白色的,并且它们的可见性非常糟糕。例如,在YouTube应用程序中,相同的布局如下所示:
所以,我的问题很简单:如何更改布局,或者如何更改布局中的Cast图标?我在CastCompanionLibrary中没有看到它。 谢谢你的任何建议。
答案 0 :(得分:2)
据我所知,您在更改卷时看到的UI由系统通过MediaSession或RemoteControlClient等提供,而不是应用程序本身。因此,我不知道有任何改变方法。您在YT中看到的UI是一个自定义UI,并且通过app完成卷的处理;实际上,如果您将YT应用程序发送到后台并更改音量,您会看到不同的UI,因此他们似乎决定自己捕获硬件卷并提供自己的自定义UI。只要您的应用程序在前面,这是可行的;一旦它失去焦点(例如当它转到背景时),你的应用程序就不会收到音量键事件而你的应用程序也做不了多少(这也是YT会发生的事情)。尝试使用Google Play音乐,看看在转换时更改音量时用户界面的样子。
答案 1 :(得分:0)
为了实现这一点,播放器服务必须维持“活动” MediaSessionCompat
。该服务应主动将媒体播放器的播放状态与MediaSessionCompat
同步。除此之外,服务必须在初始化时通过媒体会话调用MediaRouter#setMediaSessionCompat()
。
如果满足所有这些条件,则在投射时,服务可以调用MediaSessionCompat#setPlaybackToRemote(VolumeProviderCompat)
。然后,只要播放器处于“播放”状态,音量事件就会传递到MediaSession中,该媒体会话将调用VolumeProviderCompat
。要切换回常规媒体控件,即在强制转换会话结束时,服务可以调用MediaSessionCompat#setPlaybackToLocal(AudioManager.STREAM_*)
。