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