WP8开发从SD卡读取音频文并设置为手机铃声

【菜科解读】
首先在Sd卡上新建一个Ringstones的文件夹 向文件内放一些MP3格式的音频文件 再将文件重命名为“.yumi”格式的文件
第 1 步: 指定功能
在应用程序清单文件中,WMAppManifest.xml,指定访问 SD 卡的ID_CAP_REMOVEABLE_STORAGE功能。
XAML
步骤 2: 注册扩展
若要处理特定的文件类型,注册文件关联扩展名。
在 WMAppManifest.xml 中指定的扩展名。
后的标记元素,里面的扩展元素,只是下面的FileTypeAssociation元素与指 定文件关联扩展名。
1 4 Assets/Route_Mapper_Logo33x33.png 5 Assets/Route_Mapper_Logo69x69.png 6 Assets/Route_Mapper_Logo176x176.png 9 .yumi12
步骤3: 从 SD 卡中获取文件
// 连接当前的SDCardExternalStorageDevice _sdCard = (await ExternalStorage.GetExternalStorageDevicesAsync()).FirstOrDefault();// 如果sd卡存在连接Ringstone文件夹.if (_sdCard != null){ try { ExternalStorageFolder routesFolder = await _sdCard.GetFolderAsync("Ringstones"); IEnumerable routeFiles = await routesFolder.GetFilesAsync(); foreach (ExternalStorageFile esf in routeFiles) { if (esf.Path.EndsWith(".yumi")) { Routes.Add(esf); } } } catch (FileNotFoundException) { MessageBox.Show("你的SD卡上的Ringstones文件夹丢失。
添加一个Ringstones文件夹中包含至少一个yumi文件,然后再试一次."); }}else { MessageBox.Show("你的SD卡上的Ringstones文件夹丢失。
添加一个Ringstones文件夹中包含至少一个yumi文件,然后再试一次.");}
4 对读到的文件流进行转换成mp3格式并设为手机铃声
private async void SetRingClick( ExternalStorageFile ef) Stream s = await ef.OpenForReadAsync(); SaveRing(s, ef.Name);//检查系统中是否存在YumiRings文件夹 private void CreateDir() if (store.DirectoryExists("YumiRings") == false) store.CreateDirectory("YumiRings");//保存为铃声 private void SaveRing(Stream s,string name)//将读取到的.yumi格式的文件进行转储到软件中并重新更改文件格式 string filename = name.Replace("yumi", "mp3"); CreateDir(); if (store.FileExists("YumiRings" + filename)) store.DeleteFile("YumiRings" + filename); IsolatedStorageFileStream newstream = new IsolatedStorageFileStream("YumiRings//" + filename, FileMode.Create, store); BinaryWriter newwriter = new BinaryWriter(newstream); BinaryReader tempreader = new BinaryReader(s); int filesize = (int)s.Length; byte[] TempBytes = new byte[filesize]; TempBytes = tempreader.ReadBytes(filesize); newwriter.Write(TempBytes); newwriter.Close(); newstream.Close(); SetRing(filename); catch (Exception) return; ///启动手机中保存铃声的Task实现铃声的保存 private void SetRing(string name) SaveRingtoneTask saveRingtoneChooser = new SaveRingtoneTask(); saveRingtoneChooser.Completed += new EventHandler(saveRingtoneChooser_Completed); saveRingtoneChooser.Source = new Uri("isostore:/YumiRings/" + name); saveRingtoneChooser.DisplayName = name.Substring(0, name.IndexOf(".")); saveRingtoneChooser.Show(); catch (System.InvalidOperationException e) MessageBox.Show(e.Message); public void saveRingtoneChooser_Completed(object sender, TaskEventArgs e) switch (e.TaskResult) case TaskResult.OK: MessageBox.Show("OK"); break; case TaskResult.Cancel: MessageBox.Show("No"); break; case TaskResult.None: MessageBox.Show("No"); break; }
源码获取请加QQ群:157153754。
WP8,开发,从,卡,读取,音频,文,并,设置,为,首,