windows phone 自定义铃声_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > windows phone 自定义铃声

windows phone 自定义铃声

 2013/8/2 3:09:04  mayue-tzc  博客园  我要评论(0)
  • 摘要:屌丝的电话是一个月都响不了几次的,无聊还是下了一个XX铃声,自娱自乐一下,google了一下实现原理,,,,,,真相啊!!!就是用了一个Task(SaveRingtoneTask),以前看的资料都没有提到还有这么个东西!郁闷。知道是怎么回事了,就开始敲键盘了(不是什么好习惯吧呵呵)。保存本地的音频文件为铃声还是比较简单的,那XX铃声是网络下载的,,,就开始想下载并写到独立存储文件的代码,好久不写!!!该忘的都忘了,回linzheng老师的博客再学习一下文件下载和独立存储先贴下代码
  • 标签:Windows 自定义

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

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

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

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

上一篇: .net 0801笔记 下一篇: MVC (IOS)
发表评论
用户名: 匿名