次の方法で共有


ms-tonepicker URI スキームを使用してトーンを選択して保存する

このトピックでは、 ms-tonepicker: URI スキームの使用方法について説明します。 この URI スキームは、次の用途に使用できます。

  • デバイスでトーン ピッカーを使用できるかどうかを判断します。
  • 利用可能な着信音、システムサウンド、テキストトーン、アラーム音を一覧表示するには、トーンピッカーを表示します。をクリックして、ユーザーが選択したサウンドを表すトーン トークンを取得します。
  • サウンド ファイル トークンを入力として受け取り、デバイスに保存するトーン セーバーを表示します。 保存されたトーンは、トーンピッカーを介して利用可能になります。 ユーザーは、トーンにフレンドリ名を付けることもできます。
  • トーン トークンをフレンドリーネームに変換します。

ms-tonepicker: URI スキーム リファレンス

この URI スキームは、URI スキーム文字列を介して引数を渡すのではなく、 ValueSet を介して引数を渡します。 すべての文字列で大文字と小文字が区別されます。

以下のセクションでは、指定したタスクを実行するために渡す必要がある引数を示します。

タスク: デバイスでトーン ピッカーを使用できるかどうかを判断する

var status = await Launcher.QueryUriSupportAsync(new Uri("ms-tonepicker:"),     
                                     LaunchQuerySupportType.UriForResults,
                                     "Microsoft.Tonepicker_8wekyb3d8bbwe");

if (status != LaunchQuerySupportStatus.Available)
{
    // the tone picker is not available
}

タスク: トーン ピッカーを表示する

トーン ピッカーを表示するために渡すことができる引数は次のとおりです。

パラメーター タイプ 必須 指定できる値 説明
アクション ひも はい 着信音を選択 トーン ピッカーを開きます。
CurrentToneFilePath ひも いいえ 既存のトーン トークン。 トーンピッカーで現在選択されているトーンとして表示するトーン。 この値が設定されていない場合、リストの最初のトーンが既定で選択されます。
これは、厳密にはファイル パスではありません。 トーン ピッカーから返されたCurrenttoneFilePath値から、ToneTokenに適した値を取得できます。
フィルタタイプ ひも いいえ "着信音"、"通知"、"アラーム"、"なし" ピッカーに追加するトーンを選択します。 フィルターが指定されていない場合は、すべてのトーンが表示されます。

LaunchUriResults.Result で返される値:

戻り値 タイプ 指定できる値 説明
結果 Int32 0 成功。
1 キャンセル済み。
7 個の無効なパラメーター。
8 - フィルター条件に一致するトーンはありません。
255 - 指定されたアクションが実装されていません。
ピッカー操作の結果。
ToneToken ひも 選択したトーンのトークン。
ユーザーがピッカーで 既定値 を選択した場合、文字列は空です。
このトークンは、トースト通知ペイロードで使用することも、連絡先の着信音またはテキスト トーンとして割り当てることもできます。 このパラメーターは、 Result が 0 の場合にのみ ValueSet で返されます。
表示名 ひも 指定したトーンの親しみやすい名前。 選択したトーンを表すためにユーザーに表示できる文字列。 このパラメーターは、 Result が 0 の場合にのみ ValueSet で返されます。

例: ユーザーがトーンを選択できるようにトーン ピッカーを開く

LauncherOptions options = new LauncherOptions();
options.TargetApplicationPackageFamilyName = "Microsoft.Tonepicker_8wekyb3d8bbwe";

ValueSet inputData = new ValueSet() {
    { "Action", "PickRingtone" },
    { "TypeFilter", "Ringtones" } // Show only ringtones
};

LaunchUriResult result = await Launcher.LaunchUriForResultsAsync(new Uri("ms-tonepicker:"), options, inputData);

if (result.Status == LaunchUriStatus.Success)
{
     Int32 resultCode =  (Int32)result.Result["Result"];
     if (resultCode == 0)
     {
         string token = result.Result["ToneToken"] as string;
         string name = result.Result["DisplayName"] as string;
     }
     else
     {
           // handle failure
     }
}

タスク: トーン セーバーを表示する

トーン セーバーを表示するために渡すことができる引数は次のとおりです。

パラメーター タイプ 必須 指定できる値 説明
アクション ひも はい 着信音を保存 着信音を保存するピッカーを開きます。
トーンファイル共有トークン ひも はい SharedStorageAccessManager 、保存する着信音ファイルのファイル共有トークンを します。 特定のサウンド ファイルを着信音として保存します。 ファイルでサポートされているコンテンツ タイプは、mpeg オーディオと x-ms-wma オーディオです。
表示名 ひも いいえ 指定したトーンの親しみやすい名前。 指定した着信音を保存するときに使用する表示名を設定します。

LaunchUriResults.Result で返される値:

戻り値 タイプ 指定できる値 説明
結果 Int32 0 成功。
ユーザーによってキャンセル1がされました。
2-無効なファイル。
3-ファイル コンテンツ タイプが無効です。
4 ファイルが最大着信音サイズ (Windows 10 では 1 MB) を超えています。
5-File が 40 秒の長さの制限を超えています。
6-ファイルはデジタル著作権管理によって保護されています。
7 個の無効なパラメーター。
ピッカー操作の結果。

例: ローカルの音楽ファイルを着信音として保存する

LauncherOptions options = new LauncherOptions();
options.TargetApplicationPackageFamilyName = "Microsoft.Tonepicker_8wekyb3d8bbwe";

ValueSet inputData = new ValueSet() {
    { "Action", "SaveRingtone" },
    { "ToneFileSharingToken", SharedStorageAccessManager.AddFile(myLocalFile) }
};

LaunchUriResult result = await Launcher.LaunchUriForResultsAsync(new Uri("ms-tonepicker:"), options, inputData);

if (result.Status == LaunchUriStatus.Success)
{
     Int32 resultCode = (Int32)result.Result["Result"];

     if (resultCode == 0)
     {
         // no issues
     }
     else
     {
          switch (resultCode)
          {
             case 2:
              // The specified file was invalid
              break;
              case 3:
              // The specified file's content type is invalid
              break;
              case 4:
              // The specified file was too big
              break;
              case 5:
              // The specified file was too long
              break;
              case 6:
              // The file was protected by DRM
              break;
              case 7:
              // The specified parameter was incorrect
              break;
          }
      }
 }

タスク: トーン トークンをフレンドリ名に変換する

トーンのフレンドリ名を取得するために渡すことができる引数は次のとおりです。

パラメーター タイプ 必須 指定できる値 説明
アクション ひも はい トーン名を取得 トーンのフレンドリ名を取得したいことを示します。
ToneToken ひも はい トーン トークン 表示名を取得するトーン トークン。

LaunchUriResults.Result で返される値:

戻り値 タイプ 指定できる値 説明
結果 Int32 0- ピッカー操作に成功しました。
7- パラメーターが正しくありません (たとえば、ToneToken が指定されていません)。
9-指定したトークンの名前の読み取り中にエラーが発生しました。
10- 指定されたトーン トークンが見つかりません。
ピッカー操作の結果。
表示名 ひも トーンのフレンドリ名。 選択したトーンの表示名を返します。 このパラメーターは、 Result が 0 の場合にのみ ValueSet で返されます。

例: Contact.RingToneToken からトーン トークンを取得し、連絡先カードにそのフレンドリ名を表示します。

using (var connection = new AppServiceConnection())
{
    connection.AppServiceName = "ms-tonepicker-nameprovider";
    connection.PackageFamilyName = "Microsoft.Tonepicker_8wekyb3d8bbwe";
    AppServiceConnectionStatus connectionStatus = await connection.OpenAsync();
    if (connectionStatus == AppServiceConnectionStatus.Success)
    {
        var message = new ValueSet() {
            { "Action", "GetToneName" },
            { "ToneToken", token)
        };
        AppServiceResponse response = await connection.SendMessageAsync(message);
        if (response.Status == AppServiceResponseStatus.Success)
        {
            Int32 resultCode = (Int32)response.Message["Result"];
            if (resultCode == 0)
            {
                string name = response.Message["DisplayName"] as string;
            }
            else
            {
                // handle failure
            }
        }
        else
        {
            // handle failure
        }
    }
}