为Windows Phone 8开发媒体播放器
本文关键字:开发 媒体播放器 Phone Windows | 更新日期: 2023-09-27 17:55:01
我要为Windows Phone 8设计一个媒体播放器。我读了关于使用medilibrary(用于使用内置播放器)和MediaElement(用于设计自定义播放器)。
我使用MediaSource使用以下语句获取位于我手机存储中的所有文件。
MediaSource media_local = MediaSource.GetAvailableMediaSources().First((source => source.MediaSourceType == MediaSourceType.LocalDevice));
using (MediaLibrary mediaLibrary = new MediaLibrary(media_local))
{
SongCollection Songs = mediaLibrary.Songs;
MediaPlayer.Play(mediaLibrary.Songs);
List<Song> songslist = Songs.ToList();
foreach (var item in songslist)
{
System.Diagnostics.Debug.WriteLine(item.Name);
}
}
接下来我需要设计播放列表,我可以在列表songlist中显示所有的歌曲。我不知道如何设计播放列表功能。
例如。制作一个可以显示播放列表中所有名称的框,以及如何按顺序显示歌曲名称。
你可以使用一个列表框…
这是原始的xaml声明
<ListBox x:Name="listBoxSong" FontSize="26">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" Width="150"/>
<TextBlock Text="{Binding TrackNumber}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
现在只需在代码中将列表绑定到这个列表框。
:
listBoxSong.ItemSource = songslist;
这将生成一种列表结构,并在很大程度上提供自定义
试试这个
Xaml
<phone:LongListSelector Name="llsPlaylist"
LayoutMode="List"
SelectionChanged="SelectSong_SelectionChanged">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid Width="40"
Height="40"
Margin="0 5 5 0"
VerticalAlignment="Top"
HorizontalAlignment="Right">
<Ellipse Stroke="White"
StrokeThickness="2" />
<Image Source="/Assets/Icons/play.png"
Height="30"
Width="30"
Margin="3 0 0 0"
VerticalAlignment="Center"
HorizontalAlignment="Center" />
</Grid>
<StackPanel Grid.Column="1"
Margin="20 0 20 0">
<TextBlock Foreground="White"
FontSize="24"
TextWrapping="NoWrap"
Text="{Binding Name}" />
<TextBlock Foreground="Gray"
FontSize="18"
TextWrapping="NoWrap"
Text="{Binding Artist}" />
</StackPanel>
<TextBlock FontSize="16"
Foreground="White"
Grid.Column="2"
HorizontalAlignment="Right"
Padding="0 12 0 0"
TextWrapping="NoWrap"
Text="{Binding Duration}">
</TextBlock>
</Grid>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
CS llsPlaylist.ItemSource=songslist;