通过HW按钮改变音量时,投掷图标

问题描述 投票:0回答:2

我正在开发一个支持GoogleCast的应用程序,我正在使用一个CastCompanionLibrary,一切都很好,但在我的应用程序中存在一个小问题。我正在使用一个CastCompanionLibrary,一切都很好,但是在我的应用程序中存在一个小问题。我需要改变布局,当用户通过HW按钮改变音量时就会出现。在我的应用程序中,布局是这样的。

enter image description here

在这个布局中,有一个Cast图标,但它是白色的,它们的可见性非常差。例如,在YouTube应用中,同样的布局看起来是这样的:在这个布局中,有一个Cast图标,但它是白色的,可见性非常差。

enter image description here

所以,我的问题很简单:我怎么能改变布局,或者我怎么能改变布局中的Cast图标?我在CastCompanionLibrary中没有看到它。谢谢你的建议。

android volume google-cast
2个回答
2
投票

据我所知,当你改变音量时,你在那里看到的用户界面是由系统通过MediaSession或RemoteControlClient等提供的,而不是应用程序本身。因此,我不知道有什么方法可以改变这一点。你在YT中看到的UI是自定义的UI,对音量的处理是通过应用来完成的,其实如果你把YT应用发送到后台,改变音量,你看到的UI是不一样的,所以他们似乎决定自己采集硬件音量,提供自己的自定义UI。只要你的应用在前面,这是可以做到的;只要它失去焦点(比如转到后台时),你的应用就接收不到音量键事件,你的应用就不能做太多事情(YT也是这样)。试试Google Play Music,看看当你在投稿时改变音量时,他们的UI是怎样的。


0
投票

为了实现这一点,播放器服务必须保持一个 "活跃" MediaSessionCompat. 该服务应主动将媒体播放器的播放状态与以下内容同步。MediaSessionCompat. 除此以外,服务必须调用 MediaRouter#setMediaSessionCompat() 如果所有这些条件都满足,那么在投递时,服务可以调用 MediaSessionCompat#setPlaybackToRemote(VolumeProviderCompat). 然后,每当播放器处于 "播放 "状态时,音量事件就会被传递给MediaSession,MediaSession会调用 VolumeProviderCompat. 要切换回常规的媒体控制,即在投射会话结束时,服务可以调用 MediaSessionCompat#setPlaybackToLocal(AudioManager.STREAM_*).

实施样本---- Android MediaRouter音量事件

© www.soinside.com 2019 - 2024. All rights reserved.