Windows Phone 系列 使用 Windows Phone 保存铃声任务

可以在 Windows Phone 应用程序中使用启动器和选择器,以使用户能够执行常见的任务。使用启动器和选择器,可以帮助您在 Windows Phone 平台中提供一致的用户体验。同时,使用启动器和选择器,您还可以通过提供附加功能令您的应用程序与众不同。

启动器任务的示例包括撰写电子邮件、在社交网络上共享链接、在浏览器中打开特定网站,等等。

选择器任务的示例包括选择联系人电子邮件地址、选择手机中的照片,以及保存新的铃声。

使用 Windows Phone 保存铃声任务

使用保存铃声任务,用户可以将音频文件保存到系统铃声列表中。此任务会启动“铃声”应用程序,其中用户可以保存铃声而且可以选择将其设置为默认铃声。将音频文件添加到该列表后,用户就可以在“联系人”应用程序中将其设置为各个联系人的铃声。

这个简单的示例思路是:点击保存铃声-------调用保存铃声任务---------此时弹出系统保存铃声的窗口----在委托方法completed中获取用户的操作(是点了保存,还是取消,还是什么没做)------判断后执行你要的操作:独立存储还是干吗

铃声音频文件必须满足以下要求。

  • 文件类型必须为 MP3 或 WMA。

  • 文件大小必须小于 1 MB。

  • 文件播放的时长必须小于 40 秒。

  • 文件不得具有数字版权管理 (DRM) 保护。

使用保存铃声任务

  1. 将以下语句添加到您的代码中。

     
    using Microsoft.Phone.Tasks;
    
  2. 声明任务对象。它必须具有页面范围,因此应在页面中的构造函数之前声明它。

     
    SaveRingtoneTask saveRingtoneChooser;
    
  3. 将以下代码添加到您的页面构造函数中。此代码初始化任务对象,并标识要在用户完成任务后运行的方法。

     
    saveRingtoneChooser = new SaveRingtoneTask();
    saveRingtoneChooser.Completed += new EventHandler<TaskEventArgs>(saveRingtoneChooser_Completed);
    
  4. 在应用程序中的所需位置添加以下代码,例如按键点击事件中。为了测试此过程,可以将该代码放置在页面构造函数中。以下是启动任务的代码。

    若要测试此代码,需要将音频文件添加到应用程序并将其命名为 myTone.wma。您可以在 C:\ProgramData\Microsoft\Windows\Ringtones 中查找示例铃声,也可以在计算机中搜索带有 .wma 扩展名的任何短文件。

     
    try
    {
        saveRingtoneChooser.Source = new Uri("appdata:/myTone.wma");
        //saveRingtoneChooser.Source = new Uri("isostore:/myTone.wma"); 
    
        saveRingtoneChooser.DisplayName = "My custom ringtone";
    
        saveRingtoneChooser.Show();
    }
    catch (System.InvalidOperationException ex)
    {
        MessageBox.Show("An error occurred.");
    }
    
    
    注意注意:

    appdata: 用于属于应用程序项目一部分的音频文件。它们都捆绑在 XAP 文件中,存储在应用程序的安装目录中。isostore: 用于存储在独立存储中音频文件。

  5. 在页面中添加已完成事件处理程序的代码。此代码在用户完成任务后运行。您可以检查是否已成功保存铃声。

     
    void saveRingtoneChooser_Completed(object sender, TaskEventArgs e)
    {
        switch (e.TaskResult)
        {
            //Logic for when the ringtone was saved successfully
            case TaskResult.OK:
                MessageBox.Show("Ringtone saved.");
                break;
    
            //Logic for when the task was cancelled by the user
            case TaskResult.Cancel:
                MessageBox.Show("Save cancelled.");
                break;
    
            //Logic for when the ringtone could not be saved
            case TaskResult.None:
                MessageBox.Show("Ringtone could not be saved.");
                break;
        }
    }
    
原文地址:https://www.cnblogs.com/sunjunlin/p/2377645.html