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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过HW按钮改变音量时,投掷图标相关的知识,希望对你有一定的参考价值。

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

enter image description here

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

enter image description here

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

答案

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

另一答案

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

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

以上是关于通过HW按钮改变音量时,投掷图标的主要内容,如果未能解决你的问题,请参考以下文章

通过移动设备音量调高按钮调整 chromecast 电视音量

按下音量按钮时更改音量滑块位置

音量未更改时检测硬件音量按钮按下

如何在iOS上获得音量级别和音量更改通知?

当我的应用程序运行时,硬件音量按钮不起作用

iPhone - 无法使用硬按钮调节音量