跟踪媒体元素中的搜索开始和结束位置[UWP]

时间:2017-03-07 08:49:35

标签: c# uwp uwp-xaml

我有一个基于XAML的Windows 10 UWP应用程序,它使用MediaElement来播放视频。出于分析目的,当用户播放视频时,我想跟踪搜索操作的开始和结束位置。

我能找到的唯一事件是SeekCompleted,我可以使用mediaElement.Position获取结束位置,但我无法找到识别起始位置的方法。搜索操作开始时也不会触发CurrentStateChanged事件。我如何获得起始位置?

我正在使用的代码:

mediaElement.CurrentStateChanged += MediaElement_StateChanged;
mediaElement.SeekCompleted += MediaElement_SeekCompleted;

//Play the video
var mediaSource = MediaSource.CreateFromUri(new Uri(streamUrl));
var mediaPlaybackItem = new MediaPlaybackItem(mediaSource);
mediaElement.SetPlaybackSource(mediaSource);

public void MediaElement_StateChanged(object sender, RoutedEventArgs e)
{
    var mediaElement = sender as MediaElement;
    var state = mediaElement.CurrentState;
    var position = mediaElement.Position; 
}

public void MediaElement_SeekCompleted(object sender, RoutedEventArgs e)
{
    var position = mediaElement.Position; 
}

只有在搜索操作完成后才会调用这两个方法,因此我只能得到结束位置。我也需要开始位置。

1 个答案:

答案 0 :(得分:0)

当您开始搜索时,默认传输控件不会引发任何事件。为了得到这个,你可以修改它们,以便引发这样的事件。

有关于https://docs.microsoft.com/en-us/windows/uwp/controls-and-patterns/custom-transport-controls的自定义传输控制的文档 这些展示了如何以编程方式访问用于搜索的Slider。您可以为合适的事件添加处理程序(可能是DragStartingHoldingManipulationStarted?),然后记录当前位置。