Android 在Chromecast上播放视频广告

Android 在Chromecast上播放视频广告,android,chromecast,google-cast,Android,Chromecast,Google Cast,我想看看是否有可能在Android发送者的Chromecast视频播放之前/期间播放广告。我知道我可以处理接收器端的逻辑并切换视频src播放广告,但我如何暂停发送方应用程序上的控制器,以便在接收器上更改视频src时控制器不会崩溃?我一直在看文档,但似乎真的找不到关于这个话题的任何东西 感谢您的帮助您有两种不同的选择。我认为更适合您的情况是,当发生更改时,让您的接收器将接收器端的更改广播给所有连接的发送者,以便发送者可以调整/更新自己;更改可能是播放器状态和元数据更改。例如,在正常情况下,发送方a

我想看看是否有可能在Android发送者的Chromecast视频播放之前/期间播放广告。我知道我可以处理接收器端的逻辑并切换视频src播放广告,但我如何暂停发送方应用程序上的控制器,以便在接收器上更改视频src时控制器不会崩溃?我一直在看文档,但似乎真的找不到关于这个话题的任何东西


感谢您的帮助

您有两种不同的选择。我认为更适合您的情况是,当发生更改时,让您的接收器将接收器端的更改广播给所有连接的发送者,以便发送者可以调整/更新自己;更改可能是播放器状态和元数据更改。例如,在正常情况下,发送方a可以开始播放电影a。然后,在播放过程中,同样连接的发送方B可以开始播放电影B。然后,发送方a将收到媒体状态和元数据更新,通知其媒体已更改,以便它可以采取适当的操作,不管是什么。你的情况并没有那么不同;根据您的要求,发送方的处理可能会有所不同

我一直在使用从接收方到发送方的自定义消息来通知发送方接收方的任何状态更改,并取得了很好的效果。下面是一个示例代码片段,用于处理从发送者到接收者的各种消息--我的应用程序是一个卡拉OK播放列表,它将视频排队播放--它基于CastVideoPlaylist示例应用程序)

在发送方,我只是注册一个消息侦听器来相应地更新UI

           var playlistMessageBus = castReceiverManager.getCastMessageBus(
            namespace, cast.receiver.CastMessageBus.MessageType.JSON);
        // Create a message handler for the custome namespace channel
        playlistMessageBus.onMessage = function(event) {
            console.log('Playlist message: ' + JSON.stringify(event));
            // Handle the ADD command from the sender
            // Other commands could also be supported
            switch (event.data.command) {
                case 'ADD':
                    if (playlist == null) {
                        playlist = [];
                    }
                    console.log("Adding " + event.data.playlistItem.contentId + " to playlist");
                    playlist.push(event.data.playlistItem);
                    break;
                case 'DELETE':
                    // delete the selected item from playlist
                    {
                    var code = 0;
                    if (playlist == null) {
                        code = 0;
                    }
                    else {
                        // find the listItem title, then delete it
                        var index;
                        for (index = 0; index < playlist.length; index++) {
                            if (playlist[index].title == event.data.playlistItem.title) {
                            console.log('Found ' + event.data.playlistItem.title + 'in playlist');
                            break;
                            }
                        }
                        if (index < playlist.length) {
                            playlist.splice(index,1);
                            code = 1;
                        }
                    }
                    var message = {
                        commandResult: 'CMD_RESULT',
                        responseCode: code 
                        };
                    playlistMessageBus.send(event.senderId, JSON.stringify(message));
                    }
                    break;
                case 'MOVE_TOP':
                    {
                    // move the selected listItem to top of the playlist
                    var code = 0;
                    if (playlist == null) {
                        code = 0;
                    }
                    else if (playlist.length == 1) {
                        code = 1;
                    }
                    else {
                        // find the listItem title, then move it to the top
                        var index;
                        for (index = 0; index < playlist.length; index++) {
                            if (playlist[index].title == event.data.playlistItem.title) {
                                console.log('Found ' + event.data.playlistItem.title + 'in playlist');
                                break;
                            }
                        }
                        if (index < playlist.length) {
                            playlist.splice(index,1);
                            playlist.unshift(event.data.playlistItem);
                            code = 1;
                        }
                    }
                    var message = {
                        commandResult: 'CMD_RESULT',
                        responseCode: code
                        };
                    playlistMessageBus.send(event.senderId, JSON.stringify(message));
                    }
                    break;
                case 'QUERY':
                    switch (event.data.category) {
                        case 'PLAY_STATUS':
                            {
                            console.log("Sending play status back to sender app");
                            // inform all senders on the CastMessageBus of the incoming message event
                            // sender message listener will be invoked
                            var playState = (inPlay) ? 'PLAYING' : 'STOPPED';
                            var message = {
                                playstatus: 'PLAY_STATUS',
                                state: playState
                                };
                            playlistMessageBus.send(event.senderId, JSON.stringify(message));
                            }
                            break;
                        case 'SELECTED_MEDIA':
                            {
                            // return the current select media
                            var listItem = null;
                            if (curLoadedPlaylistItem != null) {
                                listItem = {
                                    title: curLoadedPlaylistItem.title,
                                    contentId : curLoadedPlaylistItem.contentID,
                                    image: curLoadedPlaylistItem.image
                                    };
                            }
                            var message = {
                                mediastatus: 'MEDIA_STATUS',
                                playlistItem: listItem
                                };
                            playlistMessageBus.send(event.senderId, JSON.stringify(message));
                            }
                            break;
                        case 'PLAYLIST':
                            {
                            // return the playlist
                            var message = {
                                playliststatus: 'PLAYLIST',
                                playlist: playlist
                                };
                            playlistMessageBus.send(event.senderId, JSON.stringify(message));
                            }
                            break;
                        default:
                            console.log("Unrecognized category from sender: " + event.data.category);
                            break;
                    }
                    break;
                default:
                    console.log("Unrecognized command from sender: " + event.data.command);
                    break;
            }
        };
var playlingmessagebus=castrecivermanager.getCastMessageBus(
命名空间,cast.receiver.CastMessageBus.MessageType.JSON);
//为custome命名空间通道创建消息处理程序
PlayMessageBus.onMessage=函数(事件){
log('playlistmessage:'+JSON.stringify(event));
//处理来自发送方的ADD命令
//还可以支持其他命令
开关(event.data.command){
案例“添加”:
如果(播放列表==null){
播放列表=[];
}
console.log(“将“+event.data.playlitem.contentId+”添加到播放列表”);
playlist.push(事件、数据、播放项);
打破
案例“删除”:
//从播放列表中删除所选项目
{
var代码=0;
如果(播放列表==null){
代码=0;
}
否则{
//找到listItem标题,然后将其删除
var指数;
用于(索引=0;索引