屌丝的电话是一个月都响不了几次的,无聊还是下了一个XX铃声,自娱自乐一下,google了一下实现原理,,,,,,真相啊!!!就是用了一个Task(SaveRingtoneTask),以前看的资料都没有提到还有这么个东西!郁闷。知道是怎么回事了 ,就开始敲键盘了(不是什么好习惯吧 呵呵)。
保存本地的音频文件为铃声还是比较简单的,那XX铃声是网络下载的,,,就开始想下载并写到独立存储文件的代码,好久不写!!!该忘的都忘了,回linzheng老师的博客再学习一下 文件下载 和 独立存储
先贴下代码(代码可能写的有点难看,忘大牛指点),定义了一个CustomRingtone类,来定义本地铃声和网络下载的音频文件,
public class CustomRingtone { SaveRingtoneTask saveRingtoneTask; private WebClient webDown; public CustomRingtone() { saveRingtoneTask = new SaveRingtoneTask(); webDown = new WebClient(); saveRingtoneTask.Completed += new EventHandler<TaskEventArgs>(saveRingtoneTask_Completed); } void saveRingtoneTask_Completed(object sender, TaskEventArgs e) { switch (e.TaskResult) { case TaskResult.Cancel: MessageBox.Show("铃声保存失败"); break; case TaskResult.None: MessageBox.Show("未保存铃声"); break; case TaskResult.OK: MessageBox.Show("保存铃声成功"); break; default: break; } } public void CustomNetRingtone(string uri) { //通过read来获取下载的数据流 webDown.OpenReadCompleted += new OpenReadCompletedEventHandler(webDown_OpenReadCompleted); webDown.OpenReadAsync(new Uri(uri)); } public void CustomAppRingtone(string name) { //本地文件放在Ringtone文件下 saveRingtoneTask.Source = new Uri("appdata:/Ringtone/"+ name); saveRingtoneTask.DisplayName = "本地铃声"; saveRingtoneTask.Show(); } void webDown_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e) { if (e.Cancelled != true) { Stream stream = e.Result; IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication(); if (!storage.DirectoryExists("Ringtone")) { storage.CreateDirectory("Ringtone"); } using (IsolatedStorageFileStream isWrite = new IsolatedStorageFileStream("Ringtone/RingtoneTest.MP3", FileMode.OpenOrCreate, storage)) { long fileLong = stream.Length; byte[] bytes = new byte[fileLong]; stream.Read(bytes, 0, bytes.Length); isWrite.Write(bytes, 0, bytes.Length); isWrite.Flush(); } saveRingtoneTask.Source = new Uri("isostore:/Ringtone/RingtoneTest.MP3"); saveRingtoneTask.DisplayName = "网络下载"; saveRingtoneTask.Show(); } else { MessageBox.Show(e.Error.Message); } } }
就不贴图了,虽然没图,但是绝对有真想。
要怎么判断下载的文件有没有存到独立存储中?这个我以前都没想过的问题,看来还是要多些才能有大的进步啊。微软提供了工具的