从BackgroundAudioPlayer获取持续时间
本文关键字:持续时间 获取 BackgroundAudioPlayer | 更新日期: 2023-09-27 18:11:54
我正在使用后台音频播放器播放音频文件。我已经尝试使用background.instance.track.duration.totalseconds方法获得音频的持续时间。但是当我运行应用程序方法返回"0"每次。如果我通过断点运行代码,则检索持续时间。下面是我的代码。
if (BackgroundAudioPlayer.Instance.PlayerState != PlayState.Playing)
{
progressBar1.Visibility = System.Windows.Visibility.Visible;
TotalTimeDisplay.Visibility = System.Windows.Visibility.Visible;
//this.TotalTimeDisplay.Time = TimeSpan.Parse("00:00:00.0");
imgplay.Source = new System.Windows.Media.Imaging.BitmapImage(new Uri("Images/player_pause_new.png", UriKind.Relative));
AudioTrack audioTrack = new AudioTrack(new Uri("a" + imgname + ".MP3", UriKind.Relative), "", "", "", null);
BackgroundAudioPlayer.Instance.Track = audioTrack;
duration = BackgroundAudioPlayer.Instance.Track.Duration.TotalMilliseconds;
}
Try
BackgroundAudioPlayer.Instance.PlayStateChanged += new EventHandler(Instance_PlayStateChanged);
然后 void Instance_PlayStateChanged(object sender, EventArgs e)
{
int duration = (sender as BackgroundAudioPlayer).Track.Duration.TotalMilliseconds;
}
我不知道为什么……但是应该从
在原始代码片段中,您在设置要播放的音轨后立即请求音轨的长度。背景音频播放器系统很可能没有机会设置自己并找到音轨的长度等。所以在这一点上得到的长度为零。但是,如果您在调试器中手动分步执行代码,则通常会慢到足以给系统时间进行设置,因此您将获得正确的长度。使用上面建议的playstatechange事件以一种自然的方式解决了这个问题。