2013-11-22 56 views
0

背景如何将mp3文件添加到MediaPlayer.Queue,或以其他方式在Windows Phone上播放mp3文件列表?

我有一个包含我的设备,存储在/Resources/raw上.mp3文件的文件夹。在某些情况下,我需要依次播放这些文件中的一部分。

我试图做到以下几点:

foreach (var track in _tracks) 
{ 
    var name = track.Item1; 
    var uri = new Uri(string.Format("{0}/{1}", "/Resources/raw", name), UriKind.Relative); 

    var song = Song.FromUri(name, uri); 

    FrameworkDispatcher.Update(); 
    // only the last track plays because the foreach loop is too fast 
    MediaPlayer.Play(song); 

} 

不幸的是,这是行不通的,因为MediaPlayer.Play()播放歌曲在一个单独的线程和foreach循环只是触发每个人一样快,我的处理器让它。因此,它只能播放最后一首歌曲。

我试着添加一个延迟,例如在Play()的每次调用之前,它们都不起作用。

我可以看到MediaPlayer有一个Queue属性和MoveNext()方法,播放队列中的下一首歌曲。但是,我无法弄清楚如何将文件列表添加到队列中。

问题

我怎样才能得到歌曲成队列,这样我可以顺序播放呢?这是达到我需要的结果的最佳方式吗?如果不是,我应该怎么做顺序播放mp3文件?

回答

0

最终什么工作(虽然不是最好)是增加了Thread.Sleep()时的东西比轨道更长。我最初没有使用足够长的值:

foreach (var track in _tracks) 
{ 
    var name = track.Item1; 
    var uri = new Uri(string.Format("{0}/{1}", "/Resources/raw", name), UriKind.Relative); 

    var song = Song.FromUri(name, uri); 

    Thread.Sleep(2000); // this value has to be longer than the track 

    FrameworkDispatcher.Update();   
    MediaPlayer.Play(song); 

}