private void MediaPlayer_MediaEnded(object sender, MediaPlayerActionEventArgs e) { foreach (var trackingEvent in TrackingEvents.Where(t => t.PositionPercentage.HasValue && t.PositionPercentage.Value == 1).ToList()) { OnTrackEvent(new PositionEventTrackedEventArgs(trackingEvent, false)); } }
private void MediaPlayer_MediaStarted(object sender, RoutedEventArgs e) { if (!MediaPlayer.StartupPosition.HasValue) { foreach (var trackingEvent in TrackingEvents.Where(t => t.PositionPercentage.HasValue && t.PositionPercentage.Value == 0).ToList()) { OnTrackEvent(new PositionEventTrackedEventArgs(trackingEvent, false)); } } }
private void EvaluteTrackingEvents() { if (MediaPlayer.CurrentState == MediaElementState.Playing && startTime.HasValue) { PlayTime = DateTime.Now.Subtract(startTime.Value); PlayTimePercentage = PlayTime.TotalSeconds / MediaPlayer.Duration.TotalSeconds; foreach (var playTimeTrackingEvent in TrackingEvents.Except(spentPlayTimeEvents).ToList()) { if ((!playTimeTrackingEvent.PlayTimePercentage.HasValue && playTimeTrackingEvent.PlayTime <= PlayTime) || (playTimeTrackingEvent.PlayTimePercentage.HasValue && playTimeTrackingEvent.PlayTimePercentage <= PlayTimePercentage)) { spentPlayTimeEvents.Add(playTimeTrackingEvent); OnTrackEvent(new EventTrackedEventArgs(playTimeTrackingEvent)); } } } }
/// <summary> /// Applying the default events which are set in the settings for the specific type. /// </summary> private void ApplyDefaultEvents() { var settings = GetBestFittingSettings(); if (settings == null) { return; } settings.DefaultEvents.ForEach(eventDefinition => { if (eventDefinition.EventType == Enums.EventType.UNKNOWN) { throw new ArgumentException("The UNKNOWN value is not allowed to set!"); } TrackingEvents.Add(eventDefinition); AddEventHandler(Element, eventDefinition, Element); }); }