Выбор и сохранение звуковых сигналов с помощью схемы URI ms-tonepicker
В этом разделе описывается, как использовать схему URI ms-tonepicker . Эту схему 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
}
Задача. Отображение средства выбора тонов
Аргументы, которые можно передать для отображения средства выбора тонов, приведены следующим образом:
Параметр | Type | Обязательное поле | Возможные значения | Description |
---|---|---|---|---|
Действие | строка | yes | "PickRingtone" | Открывает средство выбора тонов. |
CurrentToneFilePath | строка | no | Существующий маркер тона. | Тон, который будет отображаться как текущий тон в тоновщике. Если это значение не задано, по умолчанию выбран первый тон в списке. Это не, строго говоря, путь к файлу. Вы можете получить подходящее значение CurrenttoneFilePath из ToneToken значения, возвращаемого из средства выбора тонов. |
TypeFilter | строка | no | "Ringtones", "Уведомления", "Будильники", "Нет" | Выбирает, какие тоны нужно добавить в средство выбора. Если фильтр не указан, отображаются все тоны. |
Значения, возвращаемые в LaunchUriResults.Result:
Возвращаемые значения | Тип | Возможные значения | Description |
---|---|---|---|
Результат | Int32 | 0-success. 1-отменено. 7-недопустимые параметры. 8 — нет тонов, соответствующих критериям фильтра. 255 — указанное действие не реализовано. |
Результат операции выбора. |
ToneToken | строка | Маркер выбранного тона. Строка пуста, если пользователь выбирает значение по умолчанию в средство выбора. |
Этот маркер можно использовать в полезных данных всплывающего уведомления или может быть назначен в качестве мелодии звонка контакта или текстового тона. Параметр возвращается в ValueSet, только если результат равен 0. |
DisplayName | строка | Понятное имя указанного тона. | Строка, которую можно показать пользователю, чтобы представить выбранный тон. Параметр возвращается в ValueSet, только если результат равен 0. |
Пример. Откройте средство выбора тонов, чтобы пользователь смог выбрать тон
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
}
}
Задача. Отображение средства сохранения тонов
Аргументы, которые можно передать для отображения средства сохранения тонов, приведены следующим образом:
Параметр | Type | Обязательное поле | Возможные значения | Description |
---|---|---|---|---|
Действие | строка | yes | "SaveRingtone" | Открывает средство выбора, чтобы сохранить кольцо. |
ToneFileSharingToken | строка | yes | Маркер общего доступа к файлам SharedStorageAccessManager для сохранения файла ringtone. | Сохраняет определенный звуковой файл в виде мелодии звонка. Поддерживаемые типы контента для файла — mpeg audio и x-ms-wma. |
DisplayName | строка | no | Понятное имя указанного тона. | Задает отображаемое имя, используемое при сохранении указанного мелодии звонка. |
Значения, возвращаемые в LaunchUriResults.Result:
Возвращаемые значения | Тип | Возможные значения | Description |
---|---|---|---|
Результат | Int32 | 0-success. 1-отменено пользователем. 2-Недопустимый файл. 3-Недопустимый тип содержимого файла. 4-файл превышает максимальный размер звонка (1 МБ в Windows 10). 5-файл превышает 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;
}
}
}
Задача. Преобразование маркера тона в понятное имя
Аргументы, которые можно передать, чтобы получить понятное имя тона, сделайте следующее:
Параметр | Type | Обязательное поле | Возможные значения | Description |
---|---|---|---|---|
Действие | строка | yes | GetToneName | Указывает, что вы хотите получить понятное имя тона. |
ToneToken | строка | yes | Маркер тона | Маркер тона, из которого требуется получить отображаемое имя. |
Значения, возвращаемые в LaunchUriResults.Result:
Возвращаемое значение | Тип | Возможные значения | Description |
---|---|---|---|
Результат | Int32 | 0-Операция выбора завершилась успешно. 7-Неправильный параметр (например, не указан ТонТокен). 9-Error считывает имя указанного токена. 10.Не удается найти указанный маркер тона. |
Результат операции выбора. |
DisplayName | строка | Понятное имя тона. | Возвращает отображаемое имя выбранного тона. Этот параметр возвращается только в ValueSet, если результат равен 0. |
Пример: получение маркера тона из 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
}
}
}