WindowsPhone8中SaveSong方法将音乐文件转存到音乐库中

 

根据WindowsPhone最新的API,可以实现将音乐文件保存到音乐库中 为音乐类型应用提供了可以将音乐直接保存到音乐库中的可能,进而弥补了Wp7中的不足。

根据MSDN上要求 http://msdn.microsoft.com/en-us/library/windowsphone/develop/ff402541%28v=vs.105%29.aspx

可以实现此功能.

 

[ExtensionAttribute]
public static Song SaveSong (
         MediaLibrary library,
         Uri filename,
         SongMetadata songMetadata,
         SaveSongOperation operation
)

 

Parameters

 

library
Type: MediaLibrary The media library to which the song is to be added.
filename
Type: Uri The path to an MP3 or WMA song file in the local file system.
songMetadata
Type: SongMetadata Metadata about the song. If this argument is null, then the metadata contained in the song file is used.
operation
Type: SaveSongOperation An enumeration value that specifies whether to copy or move the song file.

 

注意:

您不能使用isostore URI方案提供的文件名参数的值。
如果提供的文件是无效的,但以下情况例外可能会发生:
如果该值为空时,一个ArgumentNullException。
如果该值包含一个空字符串时,一个InvalidOperationException。
如果该值指向一个不存在的文件,一个InvalidOperationException。
如果你不提供的songMetadata参数的值,然后在歌曲中包含的元数据文件。
当预期的元数据没有提供这些值中的歌曲文件,使用以下值:
文件名使用的Name属性的值。
String类型的属性值设置为未知。
Uri类型的属性的值保持为空

MSDN 学习地址:http://msdn.microsoft.com/en-us/library/windowsphone/develop/microsoft.xna.framework.media.PhoneExtensions.medialibraryextensions.savesong(v=xnagamestudio.42).aspx

 程序源码:

        private void CopyRingToStore()
        {
            Uri file = new Uri("Assets/Song.mp3", UriKind.Relative);
            var myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication();
            var fileStream = myIsolatedStorage.CreateFile("Song.mp3");
            var resource = Application.GetResourceStream(file);
            int chunkSize = 4096;
            byte[] bytes = new byte[chunkSize];
            int byteCount;
            while ((byteCount = resource.Stream.Read(bytes, 0, chunkSize)) > 0)
            {
                fileStream.Write(bytes, 0, byteCount);
            }
            fileStream.Close();

            Microsoft.Xna.Framework.Media.PhoneExtensions.SongMetadata metaData = new Microsoft.Xna.Framework.Media.PhoneExtensions.SongMetadata();
            metaData.AlbumName = "Some Album name";
            metaData.ArtistName = "Some Artist Name";
            metaData.GenreName = "test";
            metaData.Name = "SongName";

            var ml = new MediaLibrary();
            Uri songUri = new Uri("Song.mp3", UriKind.RelativeOrAbsolute);
            var song = Microsoft.Xna.Framework.Media.PhoneExtensions.MediaLibraryExtensions.SaveSong(ml, songUri, metaData, Microsoft.Xna.Framework.Media.PhoneExtensions.SaveSongOperation.CopyToLibrary);
        }

 

经过我的实践可以成功将音乐保存到音乐库中

博客参考地址:http://social.msdn.microsoft.com/Forums/en-US/wpdevelop/thread/f5fa73da-176b-4aaa-8960-8f704236bda5

欢迎WindowsPhone开发爱好者加入QQ群:157153754   243302359  共同交流技术问题 

 


 

posted @ 2013-02-07 15:04  MicroLeo  阅读(1093)  评论(0编辑  收藏  举报