根据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类型的属性的值保持为空
程序源码:
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 共同交流技术问题