Wählen und Speichern von Tönen mithilfe des URI-Schemas „ms-tonepicker“
In diesem Thema wird die Verwendung des URI-Schemas ms-tonepicker: beschrieben. Dieses URI-Schema kann verwendet werden, um:
- Zu ermitteln, ob die Tonauswahl auf dem Gerät verfügbar ist;
- Die Tonauswahl anzuzeigen, um die verfügbaren Klingeltöne, Systemtöne, SMS-Klingeltöne und Alarmtöne aufzulisten, und ein Tontoken zu erhalten, das den vom Benutzer ausgewählten Ton darstellt;
- Das Tool zum von Tönen anzuzeigen, das ein Sounddateitoken als Eingabe erhält und es auf dem Gerät speichert. Gespeicherte Töne stehen anschließend über die Tonauswahl zur Verfügung. Benutzer können dem Ton einen Anzeigenamen zuweisen.
- Konvertieren Sie ein Tontoken in dessen Anzeigenamen.
ms-tonepicker: URI-Schemareferenz
Dieses URI-Schema übergibt keine Argumente über die URI-Schema-Zeichenfolge, sondern über einen ValueSet. Alle Zeichenfolgen beachten die Groß- und Kleinschreibung.
In den folgenden Abschnitten wird angegeben, welche Argumente übergeben werden müssen, um die angegebene Aufgabe auszuführen.
Aufgabe: Ermitteln, ob die Tonauswahl auf dem Gerät verfügbar ist
var status = await Launcher.QueryUriSupportAsync(new Uri("ms-tonepicker:"),
LaunchQuerySupportType.UriForResults,
"Microsoft.Tonepicker_8wekyb3d8bbwe");
if (status != LaunchQuerySupportStatus.Available)
{
// the tone picker is not available
}
Aufgabe: Anzeige der Tonauswahl
Die Argumente, die Sie zum Anzeigen der Tonauswahl übergeben können, sind:
Parameter | Type | Erforderlich | Mögliche Werte | BESCHREIBUNG |
---|---|---|---|---|
Aktion | Zeichenfolge | ja | "PickRingtone" | Öffnet die Tonauswahl. |
CurrentToneFilePath | Zeichenfolge | nein | Ein vorhandenes Tontoken. | Der Ton, der in der Tonauswahl als aktueller Ton angezeigt werden soll. Wenn dieser Wert nicht festgelegt ist, ist der erste Ton in der Liste standardmäßig aktiviert. Streng genommen, ist dies kein Dateipfad. Sie können einen geeigneten Wert für CurrenttoneFilePath aus dem Wert ToneToken erhalten, der von der Tonauswahl zurückgegeben wird. |
TypeFilter | Zeichenfolge | nein | "Ringtones", "Notifications", "Alarms", "None" | Wählt die Töne aus, die der Auswahl hinzugefügt werden sollen. Wenn kein Filter angegeben ist, werden alle Töne angezeigt. |
Die Werte, die in LaunchUriResults.Result zurückgegeben werden:
Rückgabewerte | type | Mögliche Werte | BESCHREIBUNG |
---|---|---|---|
Ergebnis | Int32 | 0 – Erfolg. 1 – Abgebrochen. 7 – Ungültige Parameter. 8 – Es gibt keine Töne, die den Filterkriterien entsprechen. 255 – Die angegebene Aktion ist nicht implementiert. |
Das Ergebnis des Auswahlvorgangs. |
ToneToken | Zeichenfolge | Das Token des ausgewählten Tons. Die Zeichenfolge ist leer, wenn der Benutzer in der Auswahl Standard auswählt. |
Dieses Token kann in einer Popupbenachrichtigungs-Nutzlast verwendet werden oder einem Kontakt als Klingelton oder SMS-Klingelton zugewiesen werden. Der Parameter wird im ValueSet nur zurückgegeben, wenn Result 0 ist. |
DisplayName | Zeichenfolge | Der Anzeigename des angegebenen Tons. | Eine Zeichenfolge, die dem Benutzer angezeigt werden kann, um den ausgewählten Ton darzustellen. Der Parameter wird im ValueSet nur zurückgegeben, wenn Result 0 ist. |
Beispiel: Öffnen der Tonauswahl, damit der Benutzer einen Ton auswählen kann
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
}
}
Aufgabe: Anzeige des Tools für das Speichern von Tönen
Die Argumente, die Sie zum Anzeigen des Tools für das Speichern von Tönen übergeben können, sind:
Parameter | Type | Erforderlich | Mögliche Werte | BESCHREIBUNG |
---|---|---|---|---|
Aktion | Zeichenfolge | ja | "SaveRingtone" | Öffnet die Auswahl, um einen Klingelton zu speichern. |
ToneFileSharingToken | Zeichenfolge | ja | SharedStorageAccessManager-Dateifreigabetoken für die Klingeltondatei, die gespeichert werden soll. | Speichert eine bestimmte Audiodatei als Klingelton. Die unterstützten Inhaltstypen für die Datei sind „mpeg audio“ und „x-ms-wma audio“. |
DisplayName | Zeichenfolge | nein | Der Anzeigename des angegebenen Tons. | Legt den Anzeigenamen fest, der beim Speichern des angegebenen Klingeltons verwendet werden soll. |
Die Werte, die in LaunchUriResults.Result zurückgegeben werden:
Rückgabewerte | type | Mögliche Werte | BESCHREIBUNG |
---|---|---|---|
Ergebnis | Int32 | 0 – Erfolg. 1 – Vom Benutzer abgebrochen. 2 – Ungültige Datei. 3 – Ungültiger Inhaltstyp. 4 – Datei überschreitet die maximal zulässige Größe für Klingeltöne (1 MB in Windows 10). 5 – Datei überschreitet die Begrenzung auf 40 Sekunden. 6 – Datei wird durch Digital Rights Management geschützt. 7 – Ungültige Parameter. |
Das Ergebnis des Auswahlvorgangs. |
Beispiel: Speichern einer lokalen Musikdatei als Klingelton
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;
}
}
}
Aufgabe: Konvertieren eines Tontokens in dessen Anzeigenamen
Die Argumente, die Sie zum Abrufen des Anzeigenamens eines Tons übergeben können, sind:
Parameter | Type | Erforderlich | Mögliche Werte | BESCHREIBUNG |
---|---|---|---|---|
Aktion | Zeichenfolge | ja | "GetToneName" | Gibt an, dass Sie den Anzeigenamen eines Tons abrufen möchten. |
ToneToken | Zeichenfolge | ja | Das Tontoken. | Das Tontoken, aus dem ein Anzeigename abgerufen werden soll. |
Die Werte, die in LaunchUriResults.Result zurückgegeben werden:
Rückgabewert | type | Mögliche Werte | BESCHREIBUNG |
---|---|---|---|
Ergebnis | Int32 | 0 – Der Auswahlvorgang war erfolgreich. 7 – Falscher Parameter (wenn beispielsweise kein Tontoken angegeben wurde). 9 – Fehler beim Lesen des Namens für das angegebene Token. 10 – Das angegebene Tontoken kann nicht gefunden werden. |
Das Ergebnis des Auswahlvorgangs. |
DisplayName | Zeichenfolge | Der Anzeigename des Tons. | Gibt den Anzeigenamen des ausgewählten Tons zurück. Dieser Parameter wird im ValueSet nur zurückgegeben, wenn Result 0 ist. |
Beispiel: Abrufen eines Tontokens aus Contact.RingToneToken und Anzeigen des Anzeigenamens auf der Kontaktkarte.
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
}
}
}