У меня есть важный вопрос: я управляю потоком потока на моем ресивере, но я хочу использовать сообщение остановки от моего отправителя для остановки потока. В настоящее время я использую этот отправитель (https://github.com/googlecast/CastVideos-android) и этот ресивер (https://github.com/googlecast/CastReferencePlayer), но проблема в том, что отправитель посылает мне команду на паузу, а не на остановку во время live. В документации, стороннем отправителе Android, я читаю, что поведение правильное, и получатель должен отправить сообщение обновления состояния мультимедиа обратно отправителю и должен сообщить о состоянии как MediaStatus.PLAYER_STATE_IDLE с причиной MediaStatus.IDLE_REASON_CANCELLED.Chromecast: Управление событием остановки (не пауза) в приемнике от отправителя Android
Прибыл в этот момент. Я хочу изменить приемник и управлять паузой как остановку, а не как паузу. Я хочу управлять остановкой, потому что, когда отправитель нажимает кнопку остановки, ресивер должен остановить видео, а отправитель должен уничтожить «каждого игрока» (игрока, мини-игрока и т. Д.).
Так Моя идея заключается в следующем:
sampleplayer.CastPlayer.prototype.onPause_ = function() {
this.log_('onPause');
this.cancelDeferredPlay_('media is paused');
var isIdle = this.state_ === sampleplayer.State.IDLE;
var isDone = this.mediaElement_.currentTime === this.mediaElement_.duration;
var isUnderflow = this.player_ && this.player_.getState()['underflow'];
if (isUnderflow) {
this.log_('isUnderflow');
this.setState_(sampleplayer.State.BUFFERING, false);
this.mediaManager_.broadcastStatus(/* includeMedia */ false);
} else if (!isIdle && !isDone) {
this.setState_(sampleplayer.State.PAUSED, false);
} else if(this.isLiveStream) {
this.log_('onStop');
this.cancelDeferredPlay_('media is stopped');
var self = this;
sampleplayer.transition_(self.element_, sampleplayer.TRANSITION_DURATION_,
function() {
self.setState_(sampleplayer.State.IDLE, false);
self.resetMediaElement_();
self.mediaManager_.setIdleReason("CANCELLED");
});
return ;
}
this.updateProgress_();
};
Как вы можете видеть в третьем Branc, я контролирую переменный, я сохраненный во время загрузки видео и после того, как я поставил состояние игрока IDLE, перезагрузите mediaElement и, наконец, отправлю для трансляции State = IDLE и Reason = CANCELED. Таким образом, отправитель видит сообщение, потому что я смотрю журнал, но не интерпретирую это.
Теперь я не знаю, как продолжать и управлять этим поведением. Совет приветствуется. Спасибо.