如何在Xamarin.Forms中制作一个流畅的音频滑块

时间:2017-06-06 14:30:11

标签: c# multithreading audio xamarin.forms task

如何在Xamarin.Forms中制作流畅的音频播放器?那是我尝试过的:

  • 使用MediaPlayer播放音频文件。 Media-Player在其中使用 名为" AudioPlayer"。

  • 的服务
  • 该物业" AudioPosition"被绑定到滑块的值。

  • 有一个取消令牌用于取消播放。

代码如下:

  await Task.Run(
            () =>
                {
                    while (!ct.IsCancellationRequested)
                    {
                        this.AudioPosition = this.audioPlayer.CurrentPosition;
                    }
                },
            ct);

如果我播放音频文件一次,这会很有效。但是,如果我尝试重播该文件几次,则UI会越来越多地被阻止。似乎Task.Run()总是创建一个新任务,并且没有"配置"较旧的..?

我还尝试更新Device.InvokeOnMainThread()中的值,如果我使用它,则Slider根本不会更新。

如何以平稳的方式播放文件时如何更新音频滑块?

1 个答案:

答案 0 :(得分:0)

您是否尝试使用Timer而不是使用while循环的任务?

我认为您的应用是唯一控制播放的应用 - 因此您可以在播放暂停/停止事件处理程序/命令中处理计时器。

您提供的代码量不足以提供更高级的建议。