다음을 통해 공유


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
}

작업: 톤 선택기 표시

톤 선택기를 표시하기 위해 전달할 수 있는 인수는 다음과 같습니다.

매개 변수 유형 필수 가능한 값 설명
조치 문자열 PickRingtone 톤 선택기를 엽니다.
현재톤파일경로 (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
     }
}

작업: 톤 세이버 표시

톤 보호기를 표시하기 위해 전달할 수 있는 인수는 다음과 같습니다.

매개 변수 유형 필수 가능한 값 설명
조치 문자열 "SaveRingtone" 벨소리를 저장하기 위해 선택기를 엽니다.
톤 파일 공유 토큰 문자열 SharedStorageAccessManager가 벨소리 파일을 저장하기 위한 파일 공유 토큰입니다. 특정 사운드 파일을 벨소리로 저장합니다. 파일에 지원되는 콘텐츠 형식은 mpeg 오디오 및 x-ms-wma 오디오입니다.
디스플레이 이름 문자열 아니요 지정된 음색의 친숙한 이름입니다. 지정된 벨소리를 저장할 때 사용할 표시 이름을 설정합니다.

LaunchUriResults.Result반환되는 값은 다음과 같습니다.

반환 값 유형 가능한 값 설명
결과 Int32 0-성공.
사용자에 의해 취소됨-1.
2-잘못된 파일입니다.
3-잘못된 파일 콘텐츠 형식입니다.
4개 파일이 최대 벨소리 크기(Windows 10의 경우 1MB)를 초과합니다.
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
        }
    }
}