首先在Sd卡上新建一個(gè)Ringstones的文件夾 向文件內(nèi)放一些MP3格式的音頻文件 再將文件重命名為“.yumi”格式的文件
第 1 步: 指定功能
在應(yīng)用程序清單文件中,WMAppManifest.xml,指定訪問(wèn) SD 卡的ID_CAP_REMOVEABLE_STORAGE功能。
XAML
步驟 2: 注冊(cè)擴(kuò)展
若要處理特定的文件類型,注冊(cè)文件關(guān)聯(lián)擴(kuò)展名。在 WMAppManifest.xml 中指定的擴(kuò)展名。
后的標(biāo)記元素,里面的擴(kuò)展元素,只是下面的FileTypeAssociation元素與指 定文件關(guān)聯(lián)擴(kuò)展名。
1 2 3 4 Assets/Route_Mapper_Logo33x33.png 5 Assets/Route_Mapper_Logo69x69.png 6 Assets/Route_Mapper_Logo176x176.png 7 8 9 .yumi 10 11 12
步驟3: 從 SD 卡中獲取文件
// 連接當(dāng)前的SDCard
ExternalStorageDevice _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文件夾丟失。添加一個(gè)Ringstones文件夾中包含至少一個(gè)yumi文件,然后再試一次.");
}
}
else
{
MessageBox.Show("你的SD卡上的Ringstones文件夾丟失。添加一個(gè)Ringstones文件夾中包含至少一個(gè)yumi文件,然后再試一次.");
}
4 對(duì)讀到的文件流進(jìn)行轉(zhuǎn)換成mp3格式并設(shè)為手機(jī)鈴聲
private async void SetRingClick( ExternalStorageFile ef) { Stream s = await ef.OpenForReadAsync(); SaveRing(s, ef.Name); } //檢查系統(tǒng)中是否存在YumiRings文件夾 private void CreateDir() { if (store.DirectoryExists("YumiRings") == false) { store.CreateDirectory("YumiRings"); } } //保存為鈴聲 private void SaveRing(Stream s,string name) { try { //將讀取到的.yumi格式的文件進(jìn)行轉(zhuǎn)儲(chǔ)到軟件中并重新更改文件格式 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; } } ///啟動(dòng)手機(jī)中保存鈴聲的Task實(shí)現(xiàn)鈴聲的保存 private void SetRing(string name) { SaveRingtoneTask saveRingtoneChooser = new SaveRingtoneTask(); saveRingtoneChooser.Completed += new EventHandler(saveRingtoneChooser_Completed); try { 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; } }
源碼獲取 請(qǐng)加QQ群:157153754。