이 항목에서는 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
}
}
}