Android 从Chromecast接收器获取静音事件的正确回调是什么?

Android 从Chromecast接收器获取静音事件的正确回调是什么?,android,chromecast,google-cast,Android,Chromecast,Google Cast,我遇到了这样一个问题:当两个设备连接到同一个cast会话时,当从设备1调用BaseCastManager.setDeviceMute()时,设备2不会收到MediaCallback.onRouteEvolumeChanged() 正确的方法是什么?可能有不同的回调吗 这里是最终被称为的 /** * Mutes or un-mutes the device volume. * * @throws CastException * @throws NoConnectionException

我遇到了这样一个问题:当两个设备连接到同一个cast会话时,当从设备1调用
BaseCastManager.setDeviceMute()
时,设备2不会收到
MediaCallback.onRouteEvolumeChanged()

正确的方法是什么?可能有不同的回调吗

这里是最终被称为的

/**
 * Mutes or un-mutes the device volume.
 *
 * @throws CastException
 * @throws NoConnectionException
 * @throws TransientNetworkDisconnectionException
 */
public final void setDeviceMute(boolean mute) throws CastException,
        TransientNetworkDisconnectionException, NoConnectionException {
    checkConnectivity();
    try {
        Cast.CastApi.setMute(mApiClient, mute);
    } catch (IOException e) {
        throw new CastException("setDeviceMute", e);
    } catch (IllegalStateException e) {
        throw new NoConnectionException("setDeviceMute()", e);
    }
}
下面是我的听众:

private class MediaCallBack extends android.support.v7.media.MediaRouter.Callback {
        @Override
        public void onRouteVolumeChanged(MediaRouter router,
                                         RouteInfo route) {
            super.onRouteVolumeChanged(router, route);
            onVolumeChanged(route.getVolume());
        }


    }

您需要收听以下内容的回调:

已更改卷上的公共无效()

当设备的音量或静音状态更改时调用


您需要收听以下内容的回调:

已更改卷上的公共无效()

当设备的音量或静音状态更改时调用


由于您使用的是Cast Companion Library,因此可以通过扩展
VideoCastConsumerImpl
,覆盖该方法并将其注册到
VideoCastManager
(不再需要时取消注册)来使用回调
VideoCastConsumer#onVolumeChanged(双值,布尔isMute)


由于您使用的是Cast Companion Library,因此可以通过扩展
VideoCastConsumerImpl
,覆盖该方法并将其注册到
VideoCastManager
(不再需要时取消注册)来使用回调
VideoCastConsumer#onVolumeChanged(双值,布尔isMute)


请删除您的其他帖子,似乎与此帖子相同请删除您的其他帖子,似乎与此帖子相同这是我当前正在做的事情,但当我们将接收器静音时,不会触发onVolumeChanged。根据您发布的内容,您没有这样做;您正在使用MediaRouter.Callback而不是Cast.Listener(或者使用CCL,这相当于一件事)进行监听。还有一个问题:如果你正在使用CCL,不要试图注册直接播放事件,使用CCL的回调和APIs。这是我目前正在做的,但是当我们使接收器静音时,onVolumeChanged不会被触发。从你发布的内容来看,你没有这样做;您正在使用MediaRouter.Callback而不是Cast.Listener(或者使用CCL,这相当于一件事)进行监听。还有一个问题:如果您正在使用CCL,不要试图注册来直接转换事件,请使用CCL的回调和API
VideoCastConsumer myConsumer = new VideoCastConsumerImpl() {
   void onVolumeChanged(double value, boolean isMute) {
       // do as you wish here
   }
}

VideoCastManager.getInstance().addVideoCastConsumer(myConsumer);