windows phone 自定义铃声

时间:2024-01-14 11:13:38

  屌丝的电话是一个月都响不了几次的,无聊还是下了一个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, , bytes.Length);
isWrite.Write(bytes, , bytes.Length);
isWrite.Flush();
} saveRingtoneTask.Source = new Uri("isostore:/Ringtone/RingtoneTest.MP3");
saveRingtoneTask.DisplayName = "网络下载";
saveRingtoneTask.Show();
}
else
{
MessageBox.Show(e.Error.Message);
}
}
}

就不贴图了,虽然没图,但是绝对有真相。

要怎么判断下载的文件有没有存到独立存储中?这个我以前都没想过的问题,看来还是要多些才能有大的进步啊。微软提供了工具的

独立存储资源管理器工具   亲测了一下,一个RingtoneTest.MP3静静的躺在自己创建Ringtone目录下