zoukankan      html  css  js  c++  java
  • windows phone 自定义铃声

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

  • 相关阅读:
    每日日报
    每日日报
    JAVA日报
    JAVA日报
    JAVA日报
    JAVA日报
    NavigationDuplicated {_name: "NavigationDuplicated", name: "NavigationDuplicated"}
    2020.11.07
    2020.11.05
    2020.11.09
  • 原文地址:https://www.cnblogs.com/my-tzc/p/3231512.html
Copyright © 2011-2022 走看看