Udostępnij przez


Wybierz i zapisz tony za pomocą schematu URI ms-tonepicker

W tym temacie opisano sposób używania schematu identyfikatora URI ms-tonepicker:. Ten schemat identyfikatora URI może służyć do:

  • Ustal, czy selektor tonów jest dostępny na urządzeniu.
  • Wyświetl selektor tonu, aby wyświetlić listę dostępnych dzwonek, dźwięków systemowych, tonów tekstowych i dźwięków alarmu; i uzyskaj token tonu, który reprezentuje dźwięk wybrany przez użytkownika.
  • Wyświetl wygaszacz tonu, który pobiera token pliku dźwiękowego jako dane wejściowe i zapisuje go na urządzeniu. Zapisane odcienie są następnie dostępne za pośrednictwem selektora tonów. Użytkownicy mogą również nadać tonowi przyjazną nazwę.
  • Przekonwertuj token tonu na przyjazną nazwę.

ms-tonepicker: odwołanie do schematu identyfikatora URI

Ten schemat identyfikatora URI nie przekazuje argumentów za pośrednictwem ciągu schematu identyfikatora URI, ale zamiast tego przekazuje argumenty za pośrednictwem elementu ValueSet. W przypadku wszystkich ciągów uwzględniana jest wielkość liter.

Poniższe sekcje wskazują, które argumenty powinny zostać przekazane w celu wykonania określonego zadania.

Zadanie: ustal, czy selektor tonów jest dostępny na urządzeniu

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

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

Zadanie: Wyświetlanie selektora tonów

Argumenty, które można przekazać w celu wyświetlenia selektora tonów, są następujące:

Parametr Typ Wymagane Możliwe wartości Opis
Akcja sznurek tak "PickRingtone" Otwiera wybierak tonu.
CurrentToneFilePath sznurek Nie Istniejący token tonu. Ton, który ma być wyświetlany jako bieżący ton w wybieraczu tonów. Jeśli ta wartość nie jest ustawiona, domyślnie jest wybierany pierwszy ton na liście.
To nie jest ściśle mówiąc ścieżka pliku. Możesz uzyskać odpowiednią wartość dla CurrenttoneFilePath z wartości ToneToken zwróconej przez wybierak tonów.
Filtr typu sznurek Nie "Dzwonki", "Powiadomienia", "Alarmy", "Brak" Wybiera tony, które mają zostać dodane do wybieraka. Jeśli nie określono żadnego filtru, zostaną wyświetlone wszystkie odcienie.

Wartości zwracane w parametrze LaunchUriResults.Result:

Wartości zwracane Typ Możliwe wartości Opis
Wynik Int32 0 sukces.
1-anulowano.
7 - nieprawidłowe parametry.
8 — brak tonów zgodnych z kryteriami filtru.
255 — określona akcja nie jest implementowana.
Wynik operacji wybieraka.
ToneToken sznurek Token wybranego tonu.
Ciąg jest pusty, jeśli użytkownik wybierze domyślne w selektorze.
Ten znacznik może być używany w ładunku powiadomienia typu toast lub może być przypisany jako dzwonek przypisany do kontaktu albo sygnał wiadomości tekstowej. Parametr jest zwracany w elemencie ValueSet tylko wtedy, gdy Wynik to 0.
Nazwa wyświetlana sznurek Przyjazna nazwa określonego tonu. Ciąg, który może być wyświetlany użytkownikowi w celu reprezentowania wybranego tonu. Parametr jest zwracany w elemencie ValueSet tylko wtedy, gdy Wynik to 0.

Przykład: Otwórz selektor tonu, aby użytkownik mógł wybrać ton

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
     }
}

Zadanie: Wyświetlanie wygaszacza tonu

Argumenty, które można przekazać w celu wyświetlenia wygaszacza tonu, są następujące:

Parametr Typ Wymagane Możliwe wartości Opis
Akcja sznurek tak "SaveRingtone" Otwiera okno wyboru, aby zapisać dzwonek.
ToneFileSharingToken sznurek tak SharedStorageAccessManager token dostępu do udostępniania plików dla pliku dzwonka do zapisania. Zapisuje określony plik dźwiękowy jako dzwonek. Obsługiwane typy zawartości dla pliku to mpeg audio i x-ms-wma audio.
Nazwa wyświetlana sznurek Nie Przyjazna nazwa określonego tonu. Ustawia nazwę wyświetlaną do użycia podczas zapisywania określonego dzwonka.

Wartości zwracane w parametrze LaunchUriResults.Result:

Wartości zwracane Typ Możliwe wartości Opis
Wynik Int32 0 sukces.
1 anulowane przez użytkownika.
2-Nieprawidłowy plik.
3- Nieprawidłowy typ zawartości pliku.
4-plik przekracza maksymalny rozmiar dzwonka (1 MB w systemie Windows 10).
5-Plik przekracza limit długości 40 sekund.
6-Plik jest chroniony przez zarządzanie prawami cyfrowymi.
7 - nieprawidłowe parametry.
Wynik operacji wybieraka.

Przykład: Zapisywanie lokalnego pliku muzycznego jako dzwonka

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;
          }
      }
 }

Zadanie: Przekształcenie symbolu tonu na przyjazną nazwę

Argumenty, które można przekazać, aby uzyskać przyjazną nazwę tonu, są następujące:

Parametr Typ Wymagane Możliwe wartości Opis
Akcja sznurek tak PobierzNazwęDźwięku Wskazuje, że chcesz uzyskać przyjazną nazwę tonu.
ToneToken sznurek tak Token dźwięku Token tonu, z którego można uzyskać nazwę wyświetlaną.

Wartości zwracane w parametrze LaunchUriResults.Result:

Wartość zwracana Typ Możliwe wartości Opis
Wynik Int32 0 — Operacja selekcji zakończyła się pomyślnie.
7-Nieprawidłowy parametr (na przykład nie podano parametru ToneToken).
9— Błąd podczas odczytywania nazwy określonego tokenu.
10 — Nie można odnaleźć określonego tokenu tonu.
Wynik operacji wybieraka.
Nazwa wyświetlana sznurek Przyjazna nazwa tonu. Zwraca nazwę wyświetlaną wybranego tonu. Ten parametr jest zwracany tylko w elemencie ValueSet, jeśli wynik wynosi 0.

Przykład: pobierz token dźwięku z Contact.RingToneToken i wyświetl jego nazwę na karcie kontaktowej.

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
        }
    }
}