我正在尝试从StorageFile列表中播放歌曲。我可以加载所有歌曲,但我不知道如何使用BackgroundMediaPlayer
这是我到目前为止所得到的:
UI
<Button Content="Load" x:Name="loadbutton" Height="100" Width="100" Click="loadButton_Click"/>
<ListView x:Name="FolderList" HorizontalAlignment="Left" Height="250" VerticalAlignment="Top" Width="400">
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Name="TextBlockAlbum" Text="{Binding DisplayName}" Tapped="Album_Tapped" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
按钮加载我的所有相册并在我的ListView中显示它们。当我点击ListView时,应该使用BackgroundMediaPlayer播放专辑中的所有歌曲(这不起作用)
点击按钮:
private async void loadButton_Click(object sender, RoutedEventArgs e)
{
await RetriveFilesInFolders(listOfFiles, folder);
var ListOfAlbum = (await folder.GetFoldersAsync(CommonFolderQuery.GroupByAlbum)).ToList();
FolderList.ItemsSource = ListOfAlbum; //ListView contains Albums
}
private async Task RetriveFilesInFolders(List<StorageFile> list, StorageFolder parent)
{
foreach (var item in await parent.GetFilesAsync()) list.Add(item);
foreach (var item in await parent.GetFoldersAsync()) await RetriveFilesInFolders(list, item);
}
private async void Album_Tapped(object sender, Windows.UI.Xaml.Input.TappedRoutedEventArgs e)
{
//Load Tracks From Album
TextBlock st = (TextBlock)sender;
string albumname = st.Text;
IReadOnlyList<StorageFile> ListOfSongs = (await folder.GetFilesAsync()).ToList();
List<StorageFile> mylist = new List<StorageFile>();
foreach(var file in ListOfSongs)
{
MusicProperties musicProperties = await file.Properties.GetMusicPropertiesAsync();
if (musicProperties.Album == albumname)
mylist.Add(file);
}
}
mylist
现在包含特定专辑中的所有歌曲。如何使用音频播放器播放它们?
这是我到目前为止所做的(但它不起作用)
BackgroundMediaPlayer.Current.SetFileSource(mylist[2]);
var message = new ValueSet();
message.Add(Constants.StartPlayback, "0");
BackgroundMediaPlayer.SendMessageToBackground(message);
我知道这是一种复杂的方式,但我找不到更好的解决方案,可以在ListView(或任何视图)中列出我的专辑,并播放该专辑中的所有歌曲。