【问题标题】:How to update the volume indicator provided by the MinimalMediaRouteProvider如何更新 MinimalMediaRouteProvider 提供的音量指示器
【发布时间】:2013-08-21 19:34:42
【问题描述】:

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

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

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

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

查看支持库 7 中包含的 MediaRoute 示例,似乎有一种方法可以创建 MediaRouteDescriptor,在那里更新卷,从而将其传达回 MediaRouteProvider,但在Chromecast/MinimalMediaRouteProvider 的内容。

【问题讨论】:

    标签: chromecast


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      要立即从 VideoCastManager 获取音量:

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

      要在接收器中接收基于系统的音量变化(即屏幕上的音量滑块弹出,其他连接的设备会改变音量),您需要在控制器活动中添加演员消费者:

      private VideoCastConsumerImpl mCastConsumer = new VideoCastConsumerImpl() {
      
          public void onVolumeChanged(double volume, boolean isMute)
          {
              mVolumeSeekBar.setProgress((int) (volume *100));
          }
      };
      

      更多详情:

      Android Sender App Development (Aug '14)

      【讨论】:

        猜你喜欢
        • 2013-08-16
        • 2014-02-07
        • 1970-01-01
        • 1970-01-01
        • 2011-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-09
        相关资源
        最近更新 更多