Как обновить индикатор объема, предоставленный MinimalMediaRouteProvider

При регистрации MinimalMediaRouteProvider/MediaRouteButton из Android Chromecast SDK мы получаем стандартный диалог для подключения к существующим устройствам Cromecast. После подключения к устройству в том же диалоговом окне также можно настроить громкость с помощью перетаскиваемой панели поиска. У меня возникли проблемы с синхронизацией положения этой панели поиска громкости с фактической громкостью, которая уже установлена ​​на устройстве Chromecast.

В рамках регистрации MinimalMediaRouteProvider мы предоставляем реализацию com.google.cast.MediaRouteAdapter. OnSetVolume(volume) этого интерфейса вызывается, когда пользователь перетаскивает панель громкости seekBar выше. Это дает нам отличный способ обновить уровень громкости подключенного канала Chromecast с помощью messageStream.setVolume(volume).

Проблема в том, что после обновления тома невозможно сообщить пользовательскому интерфейсу MinimalMediaRouteProvider, что том изменился, чтобы он мог позиционировать себя соответствующим образом — в настоящее время он всегда показывает том как 0.

Как правильно уведомить MinimalMediaRouteProvider о текущем уровне громкости, чтобы он мог обновить свой пользовательский интерфейс громкости?

Глядя на образец MediaRoute, включенный в библиотеку поддержки 7, кажется, что есть способ создать MediaRouteDescriptor, обновить там том и, таким образом, передать это обратно в MediaRouteProvider, но не очень понятно, как это сделать в содержимом Chromecast. /Минималмедиароутепровидер.


person user2697829    schedule 19.08.2013    source источник


Ответы (2)


Вы можете вызвать MediaRouteStateListener.onVolumeChanged(), чтобы обновить панель поиска громкости.

У меня есть более подробный ответ здесь: https://stackoverflow.com/a/18867128/1334870

person Allan Sun    schedule 18.09.2013

Чтобы сразу получить громкость из 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 (август 2014 г.)

person radley    schedule 24.10.2014