屌丝的电话是一个月都响不了几次的,无聊还是下了一个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. Orm图解教程

    entity framework框架生成摘要文档为空(没有元数据文档可用)的bug解决方案 西安.王磊 2012-10-25 10:47 阅读:1234 评论:2   ORM for Net主流框架汇 ...

  2. js本地图片预览代码兼容所有浏览器

    html代码 <div id="divPreview" style="width: 160px; height: 170px"><img id ...

  3. ubuntu13.04装配oracle11gR2

    http://jingyan.baidu.com/album/bea41d435bc695b4c41be648.html?picindex=2 http://www.360doc.com/conten ...

  4. Java经典算法四十例编程详解+程序实例

    JAVA经典算法40例 [程序1]   题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?   1.程 ...

  5. 对Kernel panic-not syncing:No init found...init=option to kernel错误总结!

    转载:http://blog.csdn.net/wavemcu/article/details/6950053 在移植Linux中很容易出现这样那样的问题,我也遇到过,现在就共享下人家的一些经验和自己 ...

  6. BootStrap2学习日记15----选项卡

    导航格式1: <ul class="nav nav-tabs"> <li class="active"><a href=" ...

  7. 通过pinyin4j将汉字转换为全拼 和 拼音首字母

    /** * 汉字转换为拼音 包含多音字,包含生母zh,ch,sh的 */ public void toPinYinAll(){ String initials = "zh,ch,sh&quo ...

  8. ubuntu16.04 编译安装mysql5.7.x,以及配置使用

    編譯與安裝: 源码下载地址:http://dev.mysql.com/downloads/mysql/    选择Generic Linux (Architecture Independent), C ...

  9. 重构8-Replace Inheritance with Delegation(委托替换继承)

    继承的误用十分普遍.它只能用于逻辑环境,但却经常用于简化,这导致复杂的没有意义的继承层次.看下面的代码: public class Sanitation{ public String WashHand ...

  10. Java Scoket编程

    Java Scoket编程 一,网络编程中两个主要的问题 一个是如何准确的定位网络上一台或多台主机,另一个就是找到主机后如何可靠高效的进行数据传输. 在TCP/IP协议中IP层主要负责网络主机的定位, ...