0

我正在使用背景音频播放器播放音频文件。我尝试使用 background.instance.track.duration.totalseconds 方法获取音频的持续时间。但是当我运行 app 方法时,每次都返回“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;
         }

请提出解决方案。在此先感谢。

4

2 回答 2

1

尝试

BackgroundAudioPlayer.Instance.PlayStateChanged += new EventHandler(Instance_PlayStateChanged);

然后

   void Instance_PlayStateChanged(object sender, EventArgs e)
   {
       int duration = (sender as BackgroundAudioPlayer).Track.Duration.TotalMilliseconds;
   }

我不知道为什么......但它应该开始

于 2013-07-18T13:07:17.427 回答
0

在原始代码片段中,您在设置要播放的曲目后立即询问曲目的长度。背景音频播放器系统很有可能没有机会自行设置并找到轨道的长度等。因此,此时您将获得零长度。但是,如果您在调试器中手动单步执行代码,您通常会慢到足以让系统有时间进行设置,因此您将获得正确的长度。使用上面建议的 PlayStateChanged 事件可以自然地解决问题。

于 2014-05-04T10:13:32.960 回答