0

我正在使用C#/ XAML實現背景音頻Windows 8 Store應用程序,並且我設法使用帶有BackgroundCapableMedia的MediaElement在後臺運行音頻。根據那blog post,我應該可以播放播放列表。移動到帶有背景音頻的下一個軌道

但是當軌道完成時,我找不到如何移動到下一個軌道。如果我使用mediaElement.MediaEnded,則應用程序在後臺時不會調用事件處理程序。

回答

0

基本上你必須製作自己的播放列表並自己實現邏輯。您的播放列表可以只是一個集合,您可以獲取集合中的下一首曲目並播放它。從我的代碼示例:

internal ObservableCollection<StoryViewModel> Playlist { get; set; } 

void me_MediaEnded(object sender, Windows.UI.Xaml.RoutedEventArgs e) 
{ 
    Debug.WriteLine("me_MediaEnded"); 

    // Zero or one tracks only, so just end... 
    if (Playlist.Count <= 1) 
    { 
     return; 
    } 
    else 
    { 
     // We have more tracks we need to play 
     Playlist.RemoveAt(0); 
     PlayPlaylist(); 
    } 
} 

internal void PlayPlaylist() 
{ 
    if (Playlist.Count == 0) 
     return; 

    // Set the MediaControls metadata 
    MediaControl.ArtistName = _svm.ProgramTitle ?? "NPR"; 
    MediaControl.TrackName = _svm.Title; 

    // This centralized dispatcher object is updated by each page to ensure it is current 
    _dispatcher.RunAsync(
     CoreDispatcherPriority.Normal,() => 
     { 
      // Set the MediaElement to the audio and play 
      Me.Source = _svm.Mp3Uri; 
      Me.Play(); 
     }); 
} 
+0

也許我做錯了什麼,但就像我提到的,這並不適合我,因爲不叫MediaEnded功能,除非應用程序在前臺。 – Flavien