如何更新MinimalMediaRouteProvider提供的音量指示器

时间:2013-08-19 21:24:30

标签: chromecast

从Androids Chromecast SDK注册MinimalMediaRouteProvider / MediaRouteButton时,我们会得到一个标准对话框,用于连接现有的Cromecast设备。连接到设备后,同一对话框还提供了使用可拖动搜索栏设置音量的方法。我无法将此卷搜索栏的位置与已在Chromecast设备中设置的实际音量同步。

作为注册MinimalMediaRouteProvider的一部分,我们提供了com.google.cast.MediaRouteAdapter实现。当用户拖动上面的卷seekBar时,将调用此接口的onSetVolume(卷)。这为我们提供了一种使用messageStream.setVolume(volume)来更新连接的chromecast通道音量级别的方法。

问题在于,一旦我们更新了卷,就无法告知MinimalMediaRouteProvider UI卷已更改,因此它可以相应地定位自己 - 当前它始终将卷显示为0.。

通知MinimalMediaRouteProvider有关当前音量级别以便更新其音量UI的正确方法是什么?

查看支持库7中包含的MediaRoute示例,似乎有一种方法可以创建MediaRouteDescriptor,在那里更新卷,然后将其传回给MediaRouteProvider,但是目前还不是很清楚如何在Chromecast / MinimalMediaRouteProvider的内容。

2 个答案:

答案 0 :(得分:1)

您可以致电MediaRouteStateListener.onVolumeChanged()更新音量搜索栏。

我在这里有一个更详细的答案: https://stackoverflow.com/a/18867128/1334870

答案 1 :(得分:0)

立即从VideoCastManager获取音量:

mVolume = (int) (mCastManager.getVolume() * 100) // cast volume is double

要在接收器中接收基于系统的音量更改(即屏幕音量滑块弹出窗口,其他连接的设备更改音量),您需要在控制器活动中添加演员消费者:< / p>

private VideoCastConsumerImpl mCastConsumer = new VideoCastConsumerImpl() {

    public void onVolumeChanged(double volume, boolean isMute)
    {
        mVolumeSeekBar.setProgress((int) (volume *100));
    }
};

更多详情:

Android Sender App Development (Aug '14)