我想通过Mediaelement播放来自webSite的音乐,“media.setSource()”

时间:2011-07-26 00:42:22

标签: windows-phone-7

我从webSite获取流,然后将它放入IsolatedStorage进入IsolatedstorageStream,

但它不起作用,没有错误没有声音,有什么问题????

HttpWebResponse reponse = request.EndGetResponse(result) as HttpWebResponse;
if (reponse.StatusCode == HttpStatusCode.OK)
{

   Stream stream=reponse.GetResponseStream();
   SaveMusic(stream, "music");
   ReadMusic("music");
   Deployment.Current.Dispatcher.BeginInvoke(
       () =>
       {
           me.AutoPlay = true;
           me.Volume = 100;
           me.SetSource(songStream);
           me.Play();
      });

}        

2 个答案:

答案 0 :(得分:0)

假设您的savingreading代码正确无误,您的stream's position可能就在最后。尝试添加

songStream.Position = 0;

之前SetSource(songStream);

尝试使用它来保存文件:

 using (var fileStorage = IsolatedStorageFile.GetUserStoreForApplication()) 
 { 
        var buffer = new byte[1024]; 
        using (var myIsStream = fileStorage.OpenFile("Source\\Music\\" + name + ".mp3", FileMode.CreateNew)) 
        { 
              int bytesRead = 0; 
              while ((bytesRead = stream.Read(buffer, 0, 1024)) > 0) 
              myIsStream.Write(buffer, 0, bytesRead); 
        } 
 } 

答案 1 :(得分:0)

好的,感谢keyboardP的帮助;这是我的代码

protected void SaveMusic(Stream stream,string name)
{

            IsolatedStorageFile fileStorage = IsolatedStorageFile.GetUserStoreForApplication();
            if (!fileStorage.DirectoryExists("Source/Music"))
            {
                fileStorage.CreateDirectory("Source/Music");
            }
            using (IsolatedStorageFileStream fileStream = IsolatedStorageFile.GetUserStoreForApplication().OpenFile("Source\\Music\\" + name + ".mp3", FileMode.Create))
            {
                byte[] bytes = new byte[stream.Length];
                stream.Read(bytes, 0, bytes.Length);
                fileStream.Write(bytes, 0, bytes.Length);
                fileStream.Flush();
            }

}
protected void ReadMusic(string name)
{

        using (IsolatedStorageFile fileStorage = IsolatedStorageFile.GetUserStoreForApplication())
        {
            songStream = null;
            songStream = new IsolatedStorageFileStream("Source\\Music\\" + name + ".mp3", FileMode.Open, fileStorage);                  

        }

}
相关问题