2013-01-21 40 views
0

这是我在MSDN论坛上找到的代码:Medialibrary Savesong方法破坏文件

Dim file As New Uri("Assets/someSong.mp3", UriKind.Relative)  
    Dim myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication() 
    Dim fileStream As IsolatedStorageFileStream = myIsolatedStorage.CreateFile("someSong.mp3") 
    Dim resource = Application.GetResourceStream(file) 
Dim chunkSize As Integer = 4096 
    Dim bytes As Byte() = New Byte(chunkSize - 1) {} 
    Dim byteCount As Integer 
    While resource.Stream.Read(bytes, 0, chunkSize) > 0 
     byteCount = resource.Stream.Read(bytes, 0, chunkSize) 
     fileStream.Write(bytes, 0, byteCount) 
    End While 
    fileStream.Close() 
    Dim metaData As New Microsoft.Xna.Framework.Media.PhoneExtensions.SongMetadata() 
    metaData.AlbumName = "Some Album name" 
    metaData.ArtistName = "Some Artist Name" 
    metaData.GenreName = "test" 
    metaData.Name = "someSongName" 
    metaData.Duration = TimeSpan.FromSeconds(185) 
    Dim ml = New MediaLibrary() 
    Dim songUri As New Uri("someSong.mp3", UriKind.RelativeOrAbsolute) 
    Dim song = Microsoft.Xna.Framework.Media.PhoneExtensions.MediaLibraryExtensions.SaveSong(ml, songUri, metaData, Microsoft.Xna.Framework.Media.PhoneExtensions.SaveSongOperation.CopyToLibrary) 

所以我能够把歌曲加载到我的手机歌曲集线器(的Lumia 920),但是当我点击非歌曲它会给出错误:c00d36c4。看起来这个流在保存期间会损坏。

我试图保存的歌曲是在构建动作“内容”和“不要复制”的应用程序项目中。

WP模拟器上发生的情况也是如此,即使我使用另一个mp3文件。

我找不到任何关于SaveSong方法的官方文档,你能帮我吗?

+0

我现在还没有找到答案,但我已成功使用'SaveSong()'方法从IsolatedStorage进行复制。 –

回答

0

解决了这个问题。它无法正确复制整个流。我切换到[Stream].CopyTo方法,然后工作。

+0

太棒了!只要确保您将此标记为接受的答案:) –