C # Как совместить индикатор выполнения с воспроизведением звука? - PullRequest
0 голосов
/ 30 октября 2019

Я хочу использовать индикатор выполнения, который может отражать звук, воспроизводимый в данный момент, то есть продолжительность звука.

Ниже приведен фрагмент моей программы, он настроен на воспроизведение аудиофайла по нажатию кнопки.

enter image description here

1 Ответ

0 голосов
/ 31 октября 2019

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;

    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...