Georg fährt extra nach Berlin um Steve Ballmer zu treffen

31 Tage Mango | Tag #20: Klingeltöne

Dieser Artikel ist Tag #20 der Serie 31 Tage Mango von Jeff Blankenburg.

Der Originalartikel befindet sich hier: Day #20: Creating Ringtones.

Dieser Artikel wurde in der Originalserie von Gastautor Jerrel Blankenship geschrieben. Bei Twitter kann Jerrel unter @thejerrel erreicht werden. Jerrel hat außerdem ein Buch geschrieben: Pro Agile .NET Development with Scrum auf Amazon.

Heute reden wir über Klingeltöne. Seit Mango haben Sie als Entwickler die Möglichkeit, Anwendungen zu schreiben, die Klingeltöne auf dem Gerät des Anwenders speichern. Damit können die Benutzer ihr Telefon noch mehr an ihre Bedürfnisse anpassen.

Kriterien für eine Audiodatei

Es gibt einige Anforderungen an Audiodateien, damit sie als Klingelton in Frage kommen.

Die Audiodatei muss die folgenden Kriterien erfüllen:

  • Sie muss im WMA oder MP3 Format sein.
  • Sie darf nicht größer als 1 MB sein.
  • Sie muss DRM-frei sein.
  • Sie darf nicht länger als 40 Sekunden sein.

Der SaveRingtoneTask Chooser

Um einen Klingelton auf dem Handy zu speichern, verwenden wir die Chooser API. Choosers erlauben den Aufruf von Systemanwendungen aus der eigenen Anwendung heraus. Beispiele hierfür sind die Kontakte App, um Informationen über einen Kontakt herauszufinden, die Bing Maps App, um eine Wegbeschreibung anzuzeigen, und eben die Anwendung für Klingeltöne. Mit dieser ist es Ihnen möglich, eine Audiodatei in der Liste der Klingeltöne im System zu speichern. Um die Anwendung für Klingeltöne aufzurufen, verwenden wir den Chooser mit dem Namen SaveRingtoneTask.

Eine eigene Klingelton-Anwendung erstellen

Um die Verwendung des Tasks etwas besser zu verstehen, bauen wir eine kleine Anwendung, die eine Audiodatei im System als Klingelton ablegt.

Um den Chooser SaveRingtoneTask zu verwenden, erstellen wir eine neue Instanz dieses Choosers und geben einen Delegate an, der aufgerufen werden soll, nachdem der Anwender die Arbeit mit dem Chooser abgeschlossen hat. Das folgende Codebeispiel zeigt den code-behind zur obigen Anwendung. Zur Verwendung des Chooser Tasks fügen wir ganz oben ein using Microsoft.Phone.Tasks hinzu.

using System;
using System.Windows;
using Microsoft.Phone.Controls;
using Microsoft.Phone.Tasks;

namespace CustomRingtonesExample
{
   public partial class MainPage : PhoneApplicationPage
   {
      private readonly SaveRingtoneTask _customRingtone;

      public MainPage()
      {
         InitializeComponent();
         _customRingtone = new SaveRingtoneTask();
         _customRingtone.Completed += customRingtone_Completed;
      }

      private void customRingtone_Completed(object sender, TaskEventArgs e)
      {
         MessageBox.Show(@"You are back from the Ringtones application. Reference e.TaskResult, in your code,
         if you want to see if the save was successful.");
      }

      private void SaveButton_Click(object sender, System.Windows.RoutedEventArgs e)
      {
         _customRingtone.Source = new Uri("appdata:/Audio/ExampleRingtone.wma");
         _customRingtone.DisplayName = "Example Custom Ringtone";
         _customRingtone.Show();
      }
   }
}

Hervorzuheben sind im Codebeispiel folgende Punkte:

  • Sie müssen einen Completed Handler angeben, der aufgerufen wird, wenn der Task abgeschlossen ist. In diesem Handler können Sie sehen, was der Anwender gemacht hat und entsprechend reagieren.
  • Um den Chooser zu starten, müssen Sie nur die Methode Show() des Choosers aufrufen.
  • Sie können Audiodateien verwenden, die entweder Teil der Anwendung selbst sind (appdata:) oder die im Isolated Storage liegen (isostore:).

Zusammenfassung

Eigene Klingeltöne sind eine gute Möglichkeit für den Anwender, sein Telefon zu personalisieren. Indem Sie den SaveRingtoneTask aufrufen, können Sie dem Anwender diese Möglichkeit der Personalisierung bieten.

Viel Spaß beim Entwickeln!

Um die in diesem Artikel behandelte Windows Phone Anwendung herunterzuladen, klicken Sie auf den Download Code Button.

Morgen wird Parag Joshi eine Technologie behandeln, die von vielen Entwicklern gefordert wurde: Sockets.

Bis dahin!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.