C # Как объединить индикатор выполнения с воспроизведением звука?
Вы можете использовать SMTC напрямую, который содержит прогресс.
<MediaPlayerElement
x:Name="mediaPlayerElement"
Margin="0,0,10,0"
VerticalAlignment="Top"
AreTransportControlsEnabled="True"
/>
ДляЧтобы оценить прогресс, нам нужно узнать длительность медиа-файла и текущую музыкальную позицию.
Мы могли бы получить продолжительность музыки с событием MediaOpened
.
private async void Player_MediaOpened(MediaPlayer sender, object args)
{
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
MusicTime = (int)sender.PlaybackSession.NaturalDuration.TotalSeconds();
});
}
А затем нам нужно вычислить значение индикатора выполнения (максимальное значение равно 100) в событии media PositionChanged
,
private async void PlaybackSession_PositionChanged(MediaPlaybackSession sender, object args)
{
await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
CurentPosition = (int)sender.Position.TotalSeconds;
progressbar.Value = (CurentPosition / MusicTime) *100;
});
}