屌丝的电话是一个月都响不了几次的,无聊还是下了一个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目录下

windows phone 自定义铃声的更多相关文章

  1. 适用于 Windows 的自定义脚本扩展

    自定义脚本扩展在 Azure 虚拟机上下载并执行脚本. 此扩展适用于部署后配置.软件安装或其他任何配置/管理任务. 可以从 Azure 存储或 GitHub 下载脚本,或者在扩展运行时将脚本提供给 A ...

  2. Windows phone 自定义用户控件(UserControl)——ColorPicker

    编码前 学习Windows phone自定义用户控件,在<WPF编程宝典>学习的小例子.并根据windows phone稍微的不同,做了点修改.ColorPicker(颜色拾取器):拥有三 ...

  3. windows print 自定义字体颜色【python】

    windows print 自定义字体颜色 import ctypes STD_INPUT_HANDLE = -10 STD_OUTPUT_HANDLE= -11 STD_ERROR_HANDLE = ...

  4. 【Azure 应用服务】在 App Service for Windows 中自定义 PHP 版本的方法

    问题描述 在App Service for Windows的环境中,当前只提供了PHP 7.4 版本的选择情况下,如何实现自定义PHP Runtime的版本呢? 如 PHP Version 8.1.9 ...

  5. [WP8.1UI控件编程]Windows Phone自定义布局规则

    3.2 自定义布局规则 上一节介绍了Windows Phone的系统布局面板和布局系统的相关原理,那么系统的布局面板并不一定会满足所有的你想要实现的布局规律,如果有一些特殊的布局规律,系统的布局面板是 ...

  6. iPhone手机更换自定义铃声

    ①首先将iPhone手机(iPhone5s)的数据线插入电脑USB接口中,然后打开iTunes(12.4.3.1)-->文件-->将文件添加到资料库 ②选中音乐文件-->点击编辑-- ...

  7. [转]Windows 注册自定义的协议

    [转自] http://blog.sina.com.cn/s/blog_86e4a51c01010nik.html 1.注册应用程序来处理自定义协议 你必须添加一个新的key以及相关的value到HK ...

  8. Windows Phone 自定义一个启动画面

    1.新建一个UserControl <UserControl x:Class="LoadingPage.PopupSplash" xmlns="http://sch ...

  9. iTunes 无法添加 iPhone 自定义铃声

    本篇文章由:http://xinpure.com/itunes-unable-to-add-iphone-custom-ringtones/ 新版本 iTunes 需要在 菜单栏 -> 文件 中 ...

随机推荐

  1. centos6.4使用man查找命令时,报错No manual entry for xxxx

    前提:安装man的命令 yum -y install man 使用man报错 [root@localhost objs]# man fcntlNo manual entry for fcntl[roo ...

  2. 来自 Github 的图形化 Git 使用教程

    转载:http://www.linuxeden.com/html/news/20120628/126451.html 这是来自 Github 上对 Git 常用操作进行简短介绍以及可视化图形操作说明的 ...

  3. Windows 之 删除保存的共享凭据(用户名和密码)

    当我们在访问Windows共享文件夹或者NAS网络共享盘的时候,Windows会提示输入访问共享所需要的用户名和密码,如果我们勾选了“记住我的凭据”,Windows 就会将认证凭据保存到计算机中,以方 ...

  4. Asp.NET 之 路径浅析

    比如你的工程是Web(url是:http://localhost/web/default.aspx) Request.ApplicationPath 就是/Web 如果是站点就直接返回"/& ...

  5. C语言第七节流程控制

    流程控制 顺序结构:默认的流程结构.按照书写顺序执行每一条语句. 选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码. 循环结构:在给定条件成立的情况下,反复执行某一段代码.     ...

  6. linux-i386(ubuntu)下编译安装gsoap_2.8.17过程记录

    过程记录 :  1.下载gsoap_2.8.17.zip 并 解压 : $unzip gsoap_2.8.17.zip     2.进入解压后的目录gsoap-2.8   3.自动配置编译环境:  $ ...

  7. 自定义 404 与 500 错误页面,URL 地址不会重定向(一)

    对于 404 与 500 错误发生时,我们希望自己定义一个更加人性化的页面. 例子 当访问下面这个地址时: http://localhost/aaaa/bbb/ccc/ddd/eee/fff/ggg ...

  8. 【Mood-7】tell 2 my gf-miss u not sudden but always

    #sorry not coming 2 see u the national day holiday! I'm BULL in the land,fighting 4 u and babies!  # ...

  9. The requested URL Not Found问题

    遇到这么一个问题: 最近刚转到linux下工作 在本地运行localhost下的thinkphp程序时,出现 一开始以为是权限问题,把目录以及文件权限都改为777依然不起作用 后来发现是rewrite ...

  10. Redis中的批量删除数据库中的Key

    本文参考:http://blog.csdn.net/spring21st/article/details/15771861 http://stackoverflow.com/questions/575 ...