Delen via


Kies en sla tonen op met behulp van het ms-tonepicker URI-schema

In dit onderwerp wordt beschreven hoe u de ms-tonepicker gebruikt: URI-schema. Dit URI-schema kan worden gebruikt voor het volgende:

  • Bepaal of de toonkiezer beschikbaar is op het apparaat.
  • De toonkiezer weergeven om beschikbare beltonen, systeemgeluiden, teksttonen en alarmgeluiden weer te geven; en haal een toontoken op dat het geluid aangeeft dat de gebruiker heeft geselecteerd.
  • Geef de toonbeveiliging weer, waarbij een geluidsbestandstoken als invoer wordt gebruikt en op het apparaat wordt opgeslagen. Opgeslagen tonen zijn vervolgens beschikbaar via de toonkiezer. Gebruikers kunnen de toon ook een gebruiksvriendelijke naam geven.
  • Converteer een toontoken naar de vriendelijke naam.

ms-tonepicker: URI-schemareferentie

Dit URI-schema geeft geen argumenten door via de URI-schematekenreeks, maar geeft in plaats daarvan argumenten door via een ValueSet. Alle tekenreeksen zijn hoofdlettergevoelig.

In de onderstaande secties wordt aangegeven welke argumenten moeten worden doorgegeven om de opgegeven taak uit te voeren.

Taak: Bepalen of de toonkiezer beschikbaar is op het apparaat

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

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

Taak: De toonkiezer weergeven

De argumenten die u kunt doorgeven om de toonkiezer weer te geven, zijn als volgt:

Kenmerk Typologie Verplicht Mogelijke waarden Beschrijving
Handeling touw ja "PickRingtone" Opent de toonkiezer.
CurrentToneFilePath touw Nee Een bestaand toon-token. De toon die als huidige toon moet worden weergegeven in de toonkiezer. Als deze waarde niet is ingesteld, wordt de eerste toon in de lijst standaard geselecteerd.
Dit is niet strikt genomen een bestandspad. U kunt voor CurrenttoneFilePath een geschikte waarde verkrijgen uit de ToneToken waarde die door de toonkiezer wordt teruggegeven.
Typefilter touw Nee "Beltonen", "Meldingen", "Alarmen", "Geen" Hiermee selecteert u welke tonen u aan de kiezer wilt toevoegen. Als er geen filter is opgegeven, worden alle tonen weergegeven.

De waarden die worden teruggegeven in LaunchUriResults.Result:

Retourwaarden Typologie Mogelijke waarden Beschrijving
Resultaat Int32 0 succes.
1 geannuleerd.
7 ongeldige parameters.
8 - geen tonen komen overeen met de filtercriteria.
255 - opgegeven actie wordt niet geïmplementeerd.
Het resultaat van het selectieproces.
ToneToken touw Het token van de geselecteerde toon.
De tekenreeks is leeg als de gebruiker standaard selecteert in de kiezer.
Dit token kan worden gebruikt in een notificatiepayload voor toastmeldingen of kan worden toegewezen als beltoon of sms-toon van een contactpersoon. De parameter wordt alleen geretourneerd in de ValueSet als resultaat 0 is.
Schermnaam touw De vriendelijke naam van de opgegeven toon. Een tekenreeks die aan de gebruiker kan worden weergegeven om de geselecteerde toon weer te geven. De parameter wordt alleen geretourneerd in de ValueSet als resultaat 0 is.

Voorbeeld: Open de toonkiezer zodat de gebruiker een toon kan selecteren

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

Taak: De toonbesparing weergeven

De argumenten die u kunt doorgeven om de toonbesparing weer te geven, zijn als volgt:

Kenmerk Typologie Verplicht Mogelijke waarden Beschrijving
Handeling touw ja "SaveRingtone" Hiermee opent u de kiezer om een beltoon op te slaan.
ToneFileSharingToken touw ja SharedStorageAccessManager bestandendelingstoken voor het beltoonbestand dat moet worden opgeslagen. Slaat een specifiek geluidsbestand op als beltoon. De ondersteunde inhoudstypen voor het bestand zijn mpeg audio en x-ms-wma audio.
Schermnaam touw Nee De vriendelijke naam van de opgegeven toon. Hiermee stelt u de weergavenaam in die moet worden gebruikt bij het opslaan van de opgegeven beltoon.

De waarden die worden teruggegeven in LaunchUriResults.Result:

Retourwaarden Typologie Mogelijke waarden Beschrijving
Resultaat Int32 0 succes.
1 geannuleerd door gebruiker.
2-Ongeldig bestand.
3-Ongeldig bestandinhoudstype.
4-bestand overschrijdt de maximale beltoongrootte (1 MB in Windows 10).
5-Bestand overschrijdt de limiet van 40 seconden.
6-Bestand wordt beveiligd door digitaal rechtenbeheer.
7 ongeldige parameters.
Het resultaat van het selectieproces.

Voorbeeld: Een lokaal muziekbestand opslaan als beltoon

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

Taak: Een toontoken converteren naar zijn vriendelijke naam

De argumenten die u kunt doorgeven om de vriendelijke naam van een toon te verkrijgen, zijn als volgt:

Kenmerk Typologie Verplicht Mogelijke waarden Beschrijving
Handeling touw ja VerkrijgToonNaam Geeft aan dat u de vriendelijke naam van een toon wilt ophalen.
ToneToken touw ja Het toon-token Het toontoken waaruit een weergavenaam moet worden opgehaald.

De waarden die worden teruggegeven in LaunchUriResults.Result:

Retourwaarde Typologie Mogelijke waarden Beschrijving
Resultaat Int32 0-De pickoperatie is geslaagd.
7-Onjuiste parameter (bijvoorbeeld geen ToneToken opgegeven).
9-Fout bij het lezen van de naam voor het opgegeven token.
10-Kan het opgegeven toontoken niet vinden.
Het resultaat van het selectieproces.
Schermnaam touw De vriendelijke naam van de toon. Retourneert de weergavenaam van de geselecteerde toon. Deze parameter wordt alleen geretourneerd in de ValueSet als resultaat 0 is.

Voorbeeld: Een toontoken ophalen uit Contact.RingToneToken en de vriendelijke naam weergeven op de contactkaart.

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