8.0 媒体: 音乐中心的新增功能, 图片中心的新增功能, 后台音乐播放的新增功能
介绍
与众不同 windows phone 8.0 之 媒体
添加音乐到音乐中心,从音乐中心删除音乐
与图片中心相关的新增功能
BackgroundAudioPlayer 的新增功能
示例
1、演示如何添加音乐 到音乐中心,以及如何从音乐中心删除音乐
MusicMediaLibrary/MusicMediaLibrary.xaml
<phone:PhoneApplicationPage x:Class="Demo.Media.MusicMediaLibrary" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone" xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" FontFamily="{StaticResource PhoneFontFamilyNormal}" FontSize="{StaticResource PhoneFontSizeNormal}" Foreground="{StaticResource PhoneForegroundBrush}" SupportedOrientations="Portrait" Orientation="Portrait" mc:Ignorable="d" shell:SystemTray.IsVisible="True"> <Grid Background="Transparent"> <StackPanel Orientation="Vertical"> <Button x:Name="btnAdd" Content="添加音乐到音乐中心" Click="btnAdd_Click" /> <Button x:Name="btnDelete" Content="从音乐中心删除音乐" Click="btnDelete_Click" /> </StackPanel> </Grid> </phone:PhoneApplicationPage>
MusicMediaLibrary/MusicMediaLibrary.xaml.cs
< /p>
/* * 演示如何添加音乐到音乐中心,以及如何从音乐中心删除音乐 * * * 在 wp8 中新增了 Microsoft.Xna.Framework.Media.PhoneExtensions.MediaLibraryExtensions,其扩展了 MediaLibrary 类 * MediaLibrary.SaveSong(Uri filename, SongMetadata songMetadata, SaveSongOperation operation) - 保存音乐到音乐中心,返回 Song 对象 * Uri filename - 需要添加到音乐中心的音乐文件,必须在 IsolatedStorage 下 * SongMetadata songMetadata - 元数据 * SaveSongOperation operation - CopyToLibrary 拷贝音乐文件;MoveToLibrary 移动音乐文件 * MediaLibrary.Delete(Song song) - 根据 Song 对象从音乐中心删除数据 * * * 注: * 1、需要在 manifest 中增加配置 <Capability Name="ID_CAP_MEDIALIB_AUDIO" /> * 2、音乐文件只支持mp3和wma,且必须在 IsolatedStorage 下 * 3、音乐的封面文件只支持jpg,且必须在 IsolatedStorage 下 * * * 另: * 1、播放音乐或视频的话,需要在 manifest 中增加配置 <Capability Name="ID_CAP_MEDIALIB_PLAYBACK" /> * 2、除了用 MediaElement 播放音乐外,还可以用 MediaPlayer(xna) 播放,参见:http://www.cnblogs.com/webabcd/archive/2011/07/11/2102713.html */ using System; using System.Collections.Generic; using System.Windows; using Microsoft.Phone.Controls; using Microsoft.Xna.Framework.Media; using Microsoft.Xna.Framework.Media.PhoneExtensions; using System.IO.IsolatedStorage; using System.IO; using Windows.Storage.Streams; using Windows.Storage; using System.Threading.Tasks; namespace Demo.Media { public partial class MusicMediaLibrary : PhoneApplicationPage { private Random _random = new Random(); public MusicMediaLibrary() { InitializeComponent(); } private async void btnAdd_Click(object sender, RoutedEventArgs e) { // 将相关文件复制到 ApplicationData 的 Local 目录下 await CopyFileToApplicationData(new Uri("ms-appx:///Assets/Demo.mp3", UriKind.Absolute), "Demo.mp3"); await CopyFileToApplicationData(new Uri("ms-appx:///Assets/Son.jpg", UriKind.Absolute), "Son.jpg"); // 将相关文件复制到 IsolatedStorage 的根目录下 // CopyFileToIsolatedStorage(new Uri("Assets/Demo.mp3", UriKind.Relative), "Demo.mp3"); // CopyFileToIsolatedStorage(new Uri("Assets/Son.jpg", UriKind.Relative), "Son.jpg"); // 需要添加到音乐中心的音乐文件仅支持mp3和wma,且必须在 ApplicationData 下,以下格式会先在 Local 目录下找,找不到再到 Local/IsolatedStorage 目录下找 Uri musicUri = new Uri("Demo.mp3", UriKind.Relative); // 需要添加到音乐中心的音乐封面文件仅支持jpg,且必须在 ApplicationData 下,以下格式会先在 Local 目录下找,找不到再到 Local/IsolatedStorage 目录下找 Uri picUri = new Uri("Son.jpg", UriKind.Relative); // 构造 SongMetadata 对象 // 如果按以下内容设置 SongMetadata 对象,则音乐文件在音乐中心的保存路径为:webabcd/webabcd album/music xxxx.mp3 SongMetadata sm = new SongMetadata(); sm.AlbumName = "webabcd album"; sm.ArtistName = "webabcd"; sm.GenreName = "rock"; sm.Name = "music " + _random.Next(1000, 10000).ToString(); sm.ArtistBackgroundUri = picUri; sm.AlbumArtUri = picUri; sm.AlbumArtistBackgroundUri = picUri; MediaLibrary library = new MediaLibrary(); try { // 添加音乐文件到音乐中心 Song song = library.SaveSong(musicUri, sm, SaveSongOperation.CopyToLibrary); } catch (Exception ex) { // 如果文件已存在,则会抛出 System.InvalidOperationException 异常 MessageBox.Show(ex.Message); } } private void btnDelete_Click(object sender, RoutedEventArgs e) { /* * MediaLibrary - 媒体库 * Songs - 返回音乐中心的 SongCollection * Albums - 返回音乐中心的 AlbumCollection * Artists - 返回音乐中心的 ArtistCollection * Genres - 返回音乐中心的 GenreCollection * Playlists - 返回音乐中心的 Playlists */ MediaLibrary library = new MediaLibrary(); // 通过 MediaLibrary 遍历音乐中心中的音乐文件 foreach (Song song in library.Songs) { // 从音乐中心删除音乐文件 if (song.Artist.Name == "webabcd") library.Delete(song); } } // 将文件从 Package 复制到 IsolatedStorage 的根目录下 private void CopyFileToIsolatedStorage(Uri sourceUri, string targetFileName) { IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication(); using (Stream input = Application.GetResourceStream(sourceUri).Stream) { using (IsolatedStorageFileStream output = isf.CreateFile(targetFileName)) { byte[] readBuffer = new byte[4096]; int bytesRead = -1; while ((bytesRead = input.Read(readBuffer, 0, readBuffer.Length)) > 0) { output.Write(readBuffer, 0, bytesRead); } } } } // 将文件从 Package 复制到 ApplicationData 的 Local 目录下 private async Task CopyFileToApplicationData(Uri sourceUri, string targetFileName) { StorageFolder applicationFolder = ApplicationData.Current.LocalFolder; StorageFile sourceFile = await StorageFile.GetFileFromApplicationUriAsync(sourceUri); await sourceFile.CopyAsync(applicationFolder, targetFileName, NameCollisionOption.ReplaceExisting); } } }
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件
, 音乐
, uri
, task await delay
, using
, 音乐文件
assets目录
windows phone、windowsphone、windows phone 10、windowsphone手机、windowsphone应用商店,以便于您获取更多的相关知识。
时间: 2024-12-23 04:26:37