コード例 #1
0
        public TrackingPage()
        {
            this.InitializeComponent();
            this.navigationHelper = new NavigationHelper(this);

            var positionTrackingPlugin = new PositionTrackingPlugin();
            player.Plugins.Add(positionTrackingPlugin);
            positionTrackingPlugin.EventTracked += trackingPlugin_EventTracked;

            positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { PositionPercentage = 0, Data = "PositionTrackingEvent: 0%" });
            positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { PositionPercentage = .25, Data = "PositionTrackingEvent: 25%" });
            positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { PositionPercentage = .50, Data = "PositionTrackingEvent: 50%" });
            positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { PositionPercentage = .75, Data = "PositionTrackingEvent: 75%" });
            positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { PositionPercentage = 1, Data = "PositionTrackingEvent: 100%" });

            positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { Position = TimeSpan.FromSeconds(5), Data = "PositionTrackingEvent: 5 seconds" });
            positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { Position = TimeSpan.FromSeconds(15), Data = "PositionTrackingEvent: 15 seconds" });
            positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { Position = TimeSpan.FromSeconds(25), Data = "PositionTrackingEvent: 25 seconds" });

            var playTimeTrackingPlugin = new PlayTimeTrackingPlugin();
            player.Plugins.Add(playTimeTrackingPlugin);
            playTimeTrackingPlugin.EventTracked += trackingPlugin_EventTracked;

            playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTimePercentage = 0, Data = "PlayTimeTrackingEvent: 0%" });
            playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTimePercentage = .50, Data = "PlayTimeTrackingEvent: 50%" });

            playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(5), Data = "PlayTimeTrackingEvent: 5 seconds" });
            playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(15), Data = "PlayTimeTrackingEvent: 15 seconds" });
            playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(45), Data = "PlayTimeTrackingEvent: 45 seconds" });

            PlayTimeEventList.ItemsSource = playTimeTrackingPlugin.TrackingEvents;
            PositionEventList.ItemsSource = positionTrackingPlugin.TrackingEvents;
            ResultsEventList.ItemsSource = new ObservableCollection<EventTrackedEventArgs>();
        }
コード例 #2
0
        public TrackingPage()
        {
            this.InitializeComponent();
            this.navigationHelper = new NavigationHelper(this);

            var positionTrackingPlugin = new PositionTrackingPlugin();

            player.Plugins.Add(positionTrackingPlugin);
            positionTrackingPlugin.EventTracked += trackingPlugin_EventTracked;

            positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent()
            {
                PositionPercentage = 0, Data = "PositionTrackingEvent: 0%"
            });
            positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent()
            {
                PositionPercentage = .25, Data = "PositionTrackingEvent: 25%"
            });
            positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent()
            {
                PositionPercentage = .50, Data = "PositionTrackingEvent: 50%"
            });
            positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent()
            {
                PositionPercentage = .75, Data = "PositionTrackingEvent: 75%"
            });
            positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent()
            {
                PositionPercentage = 1, Data = "PositionTrackingEvent: 100%"
            });

            positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent()
            {
                Position = TimeSpan.FromSeconds(5), Data = "PositionTrackingEvent: 5 seconds"
            });
            positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent()
            {
                Position = TimeSpan.FromSeconds(15), Data = "PositionTrackingEvent: 15 seconds"
            });
            positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent()
            {
                Position = TimeSpan.FromSeconds(25), Data = "PositionTrackingEvent: 25 seconds"
            });

            var playTimeTrackingPlugin = new PlayTimeTrackingPlugin();

            player.Plugins.Add(playTimeTrackingPlugin);
            playTimeTrackingPlugin.EventTracked += trackingPlugin_EventTracked;

            playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent()
            {
                PlayTimePercentage = 0, Data = "PlayTimeTrackingEvent: 0%"
            });
            playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent()
            {
                PlayTimePercentage = .50, Data = "PlayTimeTrackingEvent: 50%"
            });

            playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent()
            {
                PlayTime = TimeSpan.FromSeconds(5), Data = "PlayTimeTrackingEvent: 5 seconds"
            });
            playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent()
            {
                PlayTime = TimeSpan.FromSeconds(15), Data = "PlayTimeTrackingEvent: 15 seconds"
            });
            playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent()
            {
                PlayTime = TimeSpan.FromSeconds(45), Data = "PlayTimeTrackingEvent: 45 seconds"
            });

            PlayTimeEventList.ItemsSource = playTimeTrackingPlugin.TrackingEvents;
            PositionEventList.ItemsSource = positionTrackingPlugin.TrackingEvents;
            ResultsEventList.ItemsSource  = new ObservableCollection <EventTrackedEventArgs>();
        }
コード例 #3
0
        /// <summary>
        /// Loads ads from a source URI. Note, this is called automatically if you set the source before the MediaLoading event fires and normally does not need to be called.
        /// </summary>
        /// <param name="source">The SmartXML source URI</param>
        /// <param name="c">A cancellation token that allows you to cancel a pending operation</param>
        /// <returns>A task to await on.</returns>
        public async Task LoadAds(Uri source, CancellationToken c)
        {
            adSlots.Clear();
            var cancellationToken = CancellationTokenSource.CreateLinkedTokenSource(c, cts.Token).Token;

#if SILVERLIGHT
            adResponse = await FreeWheelFactory.LoadSource(source, cancellationToken);
#else
            adResponse = await FreeWheelFactory.LoadSource(source).AsTask(cancellationToken);
#endif

            var videoTracking = adResponse.SiteSection.VideoPlayer.VideoAsset.EventCallbacks.FirstOrDefault(ec => ec.Name == FWEventCallback.VideoView);
            if (videoTracking != null)
            {
                // use the tracking plugins to help with tracking markers. Create it if it doesn't exist.
                var positionTrackingPlugin = MediaPlayer.Plugins.OfType <PositionTrackingPlugin>().FirstOrDefault();
                if (positionTrackingPlugin == null)
                {
                    positionTrackingPlugin = new PositionTrackingPlugin();
                    MediaPlayer.Plugins.Add(positionTrackingPlugin);
                }
                positionTrackingPlugin.EventTracked += trackingPlugin_EventTracked;
                lastTrackingEvent = null; // reset
                trackingEnded     = false;
                positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent()
                {
                    PositionPercentage = 1, Data = videoTracking, Area = TrackingEventArea
                });

                var playTimeTrackingPlugin = MediaPlayer.Plugins.OfType <PlayTimeTrackingPlugin>().FirstOrDefault();
                if (playTimeTrackingPlugin == null)
                {
                    playTimeTrackingPlugin = new PlayTimeTrackingPlugin();
                    MediaPlayer.Plugins.Add(playTimeTrackingPlugin);
                }
                playTimeTrackingPlugin.EventTracked += trackingPlugin_EventTracked;
                for (int i = 0; i < 60; i = i + 15)
                {
                    playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent()
                    {
                        PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea
                    });
                }
                for (int i = 60; i < 60 * 3; i = i + 30)
                {
                    playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent()
                    {
                        PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea
                    });
                }
                for (int i = 60 * 3; i < 60 * 10; i = i + 60)
                {
                    playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent()
                    {
                        PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea
                    });
                }
                for (int i = 60 * 10; i < 60 * 30; i = i + 120)
                {
                    playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent()
                    {
                        PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea
                    });
                }
                for (int i = 60 * 30; i < 60 * 60; i = i + 300)
                {
                    playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent()
                    {
                        PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea
                    });
                }
                for (int i = 60 * 60; i < 60 * 180; i = i + 600)
                {
                    playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent()
                    {
                        PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea
                    });
                }
            }

            var videoAsset = adResponse.SiteSection.VideoPlayer.VideoAsset;
            if (videoAsset != null)
            {
                foreach (var adSlot in videoAsset.AdSlots)
                {
                    Advertisement ad = null;
                    switch (adSlot.TimePositionClass)
                    {
                    case "preroll":
                        ad = new PrerollAdvertisement();
                        break;

                    case "postroll":
                        ad = new PostrollAdvertisement();
                        break;

                    default:
                        var midroll = new MidrollAdvertisement();
                        midroll.Time = adSlot.TimePosition;
                        ad           = midroll;
                        break;
                    }

#if SILVERLIGHT
                    var payload = await FreeWheelFactory.GetAdDocumentPayload(adSlot, adResponse, cancellationToken);
#else
                    var payload = await FreeWheelFactory.GetAdDocumentPayload(adSlot, adResponse).AsTask(cancellationToken);
#endif
                    ad.Source = new AdSource(payload, DocumentAdPayloadHandler.AdType);

                    Advertisements.Add(ad);
                    adSlots.Add(ad, adSlot);
                }
            }

            ShowCompanions();
        }
コード例 #4
0
        /// <summary>
        /// Loads ads from a source URI. Note, this is called automatically if you set the source before the MediaLoading event fires and normally does not need to be called.
        /// </summary>
        /// <param name="source">The SmartXML source URI</param>
        /// <param name="c">A cancellation token that allows you to cancel a pending operation</param>
        /// <returns>A task to await on.</returns>
        public async Task LoadAds(Uri source, CancellationToken c)
        {
            adSlots.Clear();
            var cancellationToken = CancellationTokenSource.CreateLinkedTokenSource(c, cts.Token).Token;

#if SILVERLIGHT
            adResponse = await FreeWheelFactory.LoadSource(source, cancellationToken);
#else
            adResponse = await FreeWheelFactory.LoadSource(source).AsTask(cancellationToken);
#endif

            var videoTracking = adResponse.SiteSection.VideoPlayer.VideoAsset.EventCallbacks.FirstOrDefault(ec => ec.Name == FWEventCallback.VideoView);
            if (videoTracking != null)
            {
                // use the tracking plugins to help with tracking markers. Create it if it doesn't exist.
                var positionTrackingPlugin = MediaPlayer.Plugins.OfType<PositionTrackingPlugin>().FirstOrDefault();
                if (positionTrackingPlugin == null)
                {
                    positionTrackingPlugin = new PositionTrackingPlugin();
                    MediaPlayer.Plugins.Add(positionTrackingPlugin);
                }
                positionTrackingPlugin.EventTracked += trackingPlugin_EventTracked;
                lastTrackingEvent = null; // reset
                trackingEnded = false;
                positionTrackingPlugin.TrackingEvents.Add(new PositionTrackingEvent() { PositionPercentage = 1, Data = videoTracking, Area = TrackingEventArea });

                var playTimeTrackingPlugin = MediaPlayer.Plugins.OfType<PlayTimeTrackingPlugin>().FirstOrDefault();
                if (playTimeTrackingPlugin == null)
                {
                    playTimeTrackingPlugin = new PlayTimeTrackingPlugin();
                    MediaPlayer.Plugins.Add(playTimeTrackingPlugin);
                }
                playTimeTrackingPlugin.EventTracked += trackingPlugin_EventTracked;
                for (int i = 0; i < 60; i = i + 15)
                    playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea });
                for (int i = 60; i < 60 * 3; i = i + 30)
                    playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea });
                for (int i = 60 * 3; i < 60 * 10; i = i + 60)
                    playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea });
                for (int i = 60 * 10; i < 60 * 30; i = i + 120)
                    playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea });
                for (int i = 60 * 30; i < 60 * 60; i = i + 300)
                    playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea });
                for (int i = 60 * 60; i < 60 * 180; i = i + 600)
                    playTimeTrackingPlugin.TrackingEvents.Add(new PlayTimeTrackingEvent() { PlayTime = TimeSpan.FromSeconds(i), Data = videoTracking, Area = TrackingEventArea });
            }

            var videoAsset = adResponse.SiteSection.VideoPlayer.VideoAsset;
            if (videoAsset != null)
            {
                foreach (var adSlot in videoAsset.AdSlots)
                {
                    Advertisement ad = null;
                    switch (adSlot.TimePositionClass)
                    {
                        case "preroll":
                            ad = new PrerollAdvertisement();
                            break;
                        case "postroll":
                            ad = new PostrollAdvertisement();
                            break;
                        default:
                            var midroll = new MidrollAdvertisement();
                            midroll.Time = adSlot.TimePosition;
                            ad = midroll;
                            break;
                    }

#if SILVERLIGHT
                    var payload = await FreeWheelFactory.GetAdDocumentPayload(adSlot, adResponse, cancellationToken);
#else
                    var payload = await FreeWheelFactory.GetAdDocumentPayload(adSlot, adResponse).AsTask(cancellationToken);
#endif
                    ad.Source = new AdSource(payload, DocumentAdPayloadHandler.AdType);

                    Advertisements.Add(ad);
                    adSlots.Add(ad, adSlot);
                }
            }

            ShowCompanions();
        }