2013-11-22 59 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); 

}