方法: Windows Phone の着信音の保存タスクを使用する

2012/02/09

着信音の保存タスクを使用して、ユーザーは、オーディオ ファイルをシステム着信音リストに保存できます。このタスクは、着信音アプリケーションを起動し、ユーザーが着信音を保存して、オプションで既定の着信音として設定できます。オーディオ ファイルをリストに追加したら、ユーザーはそれを連絡先アプリケーションの各連絡先の着信音として設定できます。

セレクターを使用して、Windows Phone プラットフォーム全体で一貫したユーザー エクスペリエンスを提供できます。詳細については、「Windows Phone でのランチャーとセレクターの概要」を参照してください。

着信音オーディオ ファイルは次の要件を満たしている必要があります。

  • ファイルの種類は 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;
        }
    }
    

表示: