| 
 | 
	
 
 
  在通过从MSDN上的学习是这样实现的: 
  首先在Sd卡上新建一个Ringstones的文件夹 向文件内放一些MP3格式的音频文件 再将文件重命名为“.yumi”格式的文件 
 
 
             在应用程序清单文件中,WMAppManifest.xml,指定访问 SD 卡的ID_CAP_REMOVEABLE_STORAGE功能。 
 
 
 
 
 
 
             XAML 
 
 
 
 
 
 
 
 
   
  
 
       若要处理特定的文件类型,注册文件关联扩展名。在 WMAppManifest.xml 中指定的扩展名。 
       后的标记元素,里面的扩展元素,只是下面的FileTypeAssociation元素与指 定文件关联扩展名。 
 
 
 
 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      
   
 
 
 
 
// 连接当前的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文件夹丢失。添加一个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) 
{ 
try 
{ 
//将读取到的.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); 
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; 
} 
} 
  源码地址:http://vdisk.weibo.com/s/s9wdl 请加QQ群:157153754 |   
 
 
 
 | 
  
 |