Partager via


Choisir et enregistrer des tonalités à l’aide du schéma d’URI ms-tonepicker

Cette rubrique explique comment utiliser le schéma d'URI ms-tonepicker :. Ce schéma d’URI peut être utilisé pour :

  • Déterminez si le sélecteur de tonalités est disponible sur l’appareil.
  • Affichez le sélecteur de tonalités pour répertorier les sonneries disponibles, les sons système, les tonalités de texte et les sons d’alarme ; et obtenir un jeton de tonalité qui représente le son sélectionné par l’utilisateur.
  • Affichez le sauvegardeur de son, qui utilise un jeton de fichier audio en entrée et l'enregistre sur l'appareil. Les tonalités enregistrées sont ensuite disponibles via le sélecteur de tonalités. Les utilisateurs peuvent également donner au ton un nom convivial.
  • Convertissez un jeton de ton en son nom convivial.

ms-tonepicker : informations de référence sur le schéma d’URI

Ce schéma d’URI ne transmet pas d’arguments via la chaîne de schéma d’URI, mais transmet plutôt des arguments via un ValueSet. Toutes les chaînes sont sensibles à la casse.

Les sections ci-dessous indiquent quels arguments doivent être passés pour accomplir la tâche spécifiée.

Tâche : déterminer si le sélecteur de tonalités est disponible sur l’appareil

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

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

Tâche : afficher le sélecteur de tonalités

Les arguments que vous pouvez passer pour afficher le sélecteur de tonalités sont les suivants :

Paramètre Catégorie Obligatoire Valeurs possibles Descriptif
Action ficelle oui « PickRingtone » Ouvre le sélecteur de tonalités.
CheminDuFichierDeTonActuel ficelle Non Jeton de tonalité existant. Ton à afficher en tant que ton actuel dans le sélecteur de tons. Si cette valeur n’est pas définie, le premier ton de la liste est sélectionné par défaut.
Ce n’est pas, strictement parlant, un chemin d’accès de fichier. Vous pouvez obtenir une valeur appropriée pour CurrenttoneFilePath à partir de la valeur ToneToken retournée par le sélecteur de tonalités.
Filtre de Type ficelle Non « Sonneries », « Notifications », « Alarmes », « Aucun » Sélectionne les tonalités à ajouter au sélecteur. Si aucun filtre n’est spécifié, toutes les tonalités sont affichées.

Les valeurs retournées dans LaunchUriResults.Result:

Valeurs de retour Catégorie Valeurs possibles Descriptif
Résultat Int32 0-succès.
1 annulé.
7 paramètres non valides.
8 - Aucune tonalité ne correspond aux critères de filtre.
255 : l’action spécifiée n’est pas implémentée.
Le résultat de l'opération du sélecteur.
ToneToken ficelle Le jeton du ton sélectionné.
La chaîne est vide si l’utilisateur sélectionne par défaut dans le sélecteur.
Ce token peut être utilisé dans une charge utile de notification toast ou être attribué comme sonnerie ou son de message texte d’un contact. Le paramètre est retourné dans ValueSet uniquement si Result est 0.
Nom affiché ficelle Nom amical du ton spécifié. Chaîne qui peut être affichée à l’utilisateur pour représenter le ton sélectionné. Le paramètre est retourné dans ValueSet uniquement si Result est 0.

Exemple : ouvrez le sélecteur de tonalités pour permettre à l’utilisateur de sélectionner un 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
     }
}

Tâche : afficher le dispositif de sauvegarde de tonalité

Les arguments que vous pouvez passer pour afficher l’économiseur de tonalité sont les suivants :

Paramètre Catégorie Obligatoire Valeurs possibles Descriptif
Action ficelle oui « SaveRingtone » Ouvre le sélecteur pour sauvegarder une sonnerie.
ToneFileSharingToken ficelle oui SharedStorageAccessManager jeton de partage de fichiers pour enregistrer le fichier de sonnerie. Enregistre un fichier audio spécifique sous forme de sonnerie. Les types de contenu pris en charge pour le fichier sont mpeg audio et x-ms-wma audio.
Nom affiché ficelle Non Nom amical du ton spécifié. Définit le nom d'affichage à utiliser lors de l’enregistrement de la sonnerie spécifiée.

Les valeurs retournées dans LaunchUriResults.Result:

Valeurs de retour Catégorie Valeurs possibles Descriptif
Résultat Int32 0-succès.
1 annulé par l’utilisateur.
2-Fichier non valide.
3-Type de contenu de fichier non valide.
4 fichiers dépasse la taille maximale de sonnerie (1 Mo dans Windows 10).
5-File dépasse la limite de longueur de 40 secondes.
6-File est protégé par la gestion des droits numériques.
7 paramètres non valides.
Le résultat de l'opération du sélecteur.

exemple : enregistrer un fichier de musique local en tant que

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

Tâche : convertir un jeton de ton en son nom convivial

Les arguments que vous pouvez passer pour obtenir le nom convivial d’un ton sont les suivants :

Paramètre Catégorie Obligatoire Valeurs possibles Descriptif
Action ficelle oui « GetToneName » Indique que vous souhaitez obtenir le nom convivial d’un ton.
ToneToken ficelle oui Jeton de tonalité Jeton de tonalité à partir duquel obtenir un nom d’affichage.

Les valeurs retournées dans LaunchUriResults.Result:

Valeur retournée Catégorie Valeurs possibles Descriptif
Résultat Int32 0-L’opération de sélecteur a réussi.
Paramètre incorrect n°7 (par exemple, aucun ToneToken fourni).
Erreur 9 : lecture du nom du jeton spécifié.
10-Impossible de trouver le jeton de ton spécifié.
Le résultat de l'opération du sélecteur.
Nom affiché ficelle Le nom amical du ton. Retourne le nom d’affichage du ton sélectionné. Ce paramètre est retourné uniquement dans ValueSet si Result est 0.

Exemple : récupérez un jeton de tonalité à partir de Contact.RingToneToken et affichez son nom convivial dans la carte de visite.

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