Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android SDK
Code

Erstellen Sie einen Musik-Player auf Android: Einrichten des Projekts

by
Difficulty:BeginnerLength:LongLanguages:

German (Deutsch) translation by Katharina Nevolina (you can also view the original English article)

Die Android-Plattform bietet Ressourcen für die Medienwiedergabe, mit denen Ihre Apps eine Schnittstelle zwischen dem Benutzer und seinen Musikdateien erstellen können.  In dieser Tutorial-Serie werden wir eine grundlegende Musik-Player-Anwendung für Android erstellen.  Die App wird eine Liste von Liedern auf dem Benutzergerät anzeigen, so dass der Benutzer Lieder zum Spielen auswählen kann.  Die App enthält außerdem Steuerelemente für die Interaktion mit der Wiedergabe und wird weiter abgespielt, wenn sich der Benutzer von der App wegbewegt und während der Wiedergabe eine Benachrichtigung angezeigt wird.

Einführung

Beim Erstellen des Musik-Players werden mithilfe der ContentResolver-Klasse Titel auf dem Gerät, der MediaPlayer-Klasse für die Wiedergabe von Audio und der MediaController-Klasse für die Steuerung der Wiedergabe abgerufen.  Wir werden auch eine Service-Instanz verwenden, um Audio abzuspielen, wenn der Benutzer nicht direkt mit der App interagiert.  Sie sollten diese Serie abschließen können, wenn Sie ein fortgeschrittener Android-Entwickler sind. Wenn Sie also bereits ein paar Apps entwickelt haben, sollte diese Serie kein Problem für Sie sein.  Hier ist eine Vorschau der endgültigen App:

Android Music Player

In diesem Tutorial erstellen wir die App und fragen das Benutzergerät nach Audiodateien mit den Klassen ContentResolver und Cursor ab.  Im nächsten Teil verwenden wir eine Adapter-Instanz, um die Songs in einer Listenansicht darzustellen und die Wiedergabe zu starten, wenn der Benutzer ein Element aus der Liste antippt.  Im letzten Teil dieser Serie verwenden wir die MediaController-Klasse, um dem Benutzer die Kontrolle über die Wiedergabe zu geben, Funktionen zum Vor- und Zurückspringen zu implementieren und eine Shuffle-Funktion zu integrieren.  Nach dieser Serie werden wir weitere Aspekte der Medienwiedergabe untersuchen, die die App verbessern können, z. B. den Umgang mit Audiofokus, die Präsentation von Mediendateien auf verschiedene Arten und das Abspielen von Streaming-Medien.

1. Erstellen und konfigurieren Sie ein neues Projekt

Schritt 1

Erstellen Sie ein neues Android-Projekt.  Wenn Sie Eclipse verwenden, lassen Sie die IDE (Integrated Development Environment) eine Haupt-Activity-Klasse und Layout-Datei für Sie erstellen.  Für einen Teil des Codes, den wir in der Serie verwenden, benötigen Sie eine Mindest-API-Stufe von 16, daher müssen Sie zusätzliche Schritte unternehmen, um ältere Versionen zu unterstützen.  Sobald Ihr Projekt erstellt wurde, öffnen Sie die Manifest-Datei des Projekts.  Fügen Sie im manifest-Element die folgende Berechtigung hinzu:

Wir verwenden diese Berechtigung, um die Musikwiedergabe fortzusetzen, wenn das Gerät des Benutzers inaktiv wird.  Ihr Manifest sollte bereits ein Element für Ihre Haupt-Activity-Klasse enthalten.  Fügen Sie dem activity-Element die folgenden Attribute hinzu, um screenOrientation und launchMode festzulegen:

Wir werden der Einfachheit halber im Hochformat bleiben.  Der launchMode unterstützt den Prozess der Rückkehr zur App, nachdem er sich von ihm entfernt hat.  Wir zeigen eine Benachrichtigung an, die den aktuell abgespielten Titel anzeigt. Wenn Sie auf die Benachrichtigung tippen, wird der Benutzer zurück zur App geleitet.  Wir werden auch eine Service-Klasse für die Musikwiedergabe verwenden.  Fügen Sie dem Manifest des Projekts innerhalb des application-Elements und nach dem activity-Element die folgende Zeile hinzu:

Ändern Sie den Paketnamen nach Ihren eigenen Wünschen und ändern Sie den Klassennamen, wenn Sie möchten.

Schritt 2

Öffnen Sie die Hauptlayoutdatei des Projekts und ersetzen Sie deren Inhalt durch das folgende Layout:

Stellen Sie sicher, tools:context-Attribut zu ändern, wenn Ihre Haupt-Activity-Klasse anders benannt ist.  Das Layout enthält eine ListView, in der wir die Liste der Songs präsentieren werden.

Wir werden zwei Menüpunkte zum Umschalten der Shuffle-Funktion und zum Beenden der App hinzufügen.  Öffnen Sie Ihre Hauptmenüdatei (res/menu/main.xml)  und ersetzen Sie deren Inhalt durch Folgendes:

Wenn Sie möchten, können Sie die Titelfolgen in der Datei res/values/strings.xml speichern.  Die beiden Elemente beziehen sich auf ausklappbare Dateien.  Erstellen Sie Ihre eigenen oder verwenden Sie diese zwei Bilder, um mit:

Android Music Player Random Button
Android Music Player End Button

Wir verwenden auch ein Symbol, um es in der Wiedergabebenachrichtigung anzuzeigen.  Erstellen Sie jetzt eine oder verwenden Sie die folgende:

Android Music Player Play Button

Der Code bezieht sich auf die Bilder mit den Namen rand, end und play. Achten Sie also darauf, dass Sie die gleichen Dateinamen verwenden.  Kopieren Sie die Bilder in die Drawables-Ordner Ihres Projekts.  Wir werden die Aktionen später implementieren.

2. Fragen Sie das Gerät nach Lieder ab

Schritt 1

Lassen Sie uns das Gerät des Benutzers nach Audiodateien abfragen.  Fügen Sie zunächst Ihrem Projekt eine neue Klasse hinzu und benennen Sie sie Song.  Wir verwenden diese Klasse, um die Daten für eine einzelne Audiodatei zu modellieren.  Fügen Sie innerhalb der Klassendeklaration drei Instanzvariablen für die Daten hinzu, die wir für jede Spur speichern möchten:

Fügen Sie als Nächstes eine Konstruktormethode hinzu, in der wir die Instanzvariablen instanziieren:

Fügen Sie abschließend get-Methoden für die Instanzvariablen hinzu:

Wenn Sie mehr Track-Informationen verwenden möchten, können Sie der Klasse zusätzliche Instanzvariablen hinzufügen.

Schritt 2

Öffnen Sie die Haupt-Activity-Klasse und fügen Sie die folgenden Importe hinzu:

Deklarieren Sie die folgenden Instanzvariablen vor der onCreate-Methode:

Wir speichern die Songs in einer Liste und zeigen sie in der ListView-Instanz im Hauptlayout an.  Rufen Sie in onCreate nach dem Festlegen der Inhaltsansicht die ListView-Instanz mit der ID auf, die wir im Hauptlayout angegeben haben:

Instanziieren Sie die Liste wie folgt:

Erstellen Sie als Nächstes in der Deklaration der Haupt-Activity-Klasse nach den vorhandenen Methoden eine Hilfsmethode zum Abrufen der Audiodateiinformationen:

Erstellen Sie in dieser Methode eine ContentResolver-Instanz, rufen Sie den URI für externe Musikdateien ab und erstellen Sie eine Cursor-Instanz mit der ContentResolver-Instanz, um die Musikdateien abzufragen:

Jetzt können wir die Ergebnisse iterieren, indem wir zunächst prüfen, ob wir gültige Daten haben:

Wir rufen zuerst die Spaltenindizes für die Datenelemente ab, an denen wir für jeden Song interessiert sind, und dann verwenden wir diese, um ein neues Song-Objekt zu erstellen und es der Liste hinzuzufügen, bevor wir mit den Ergebnissen fortfahren.

Zurück in onCreate, nach dem Code, den wir hinzugefügt haben, rufen Sie diese neue Methode auf:

3. Zeigen Sie die Lieder an

Schritt 1

Jetzt können wir die Liste der Lieder in der Benutzeroberfläche anzeigen.  In der onCreate-Methode sortieren wir die Daten nach dem Aufruf der Hilfsmethode, die wir gerade erstellt haben, so, dass die Lieder alphabetisch dargestellt werden:

Wir verwenden die title-Variable in der Song-Klasse mit den von uns hinzugefügten get-Methoden, um eine compare-Methode zu implementieren und die Titel nach Titel zu sortieren.

Schritt 2

Lassen Sie uns ein Layout definieren, um jedes Lied in der Liste darzustellen.  Fügen Sie dem Res/Layout-Ordner Ihres Projekts eine neue Datei hinzu, benennen Sie sie mit song.xml und geben Sie Folgendes ein:

Fühlen Sie sich frei, das Layout Ihren Vorlieben anzupassen.  Jedes Lied in der Liste wird durch Titel- und Interpreten-Textzeichenfolgen dargestellt, sodass wir die TextViews zur Anzeige dieser Daten verwenden.  Beachten Sie, dass das LinearLayout-Eröffnungs-Tag ein OnClick-Attribut auflistet.  Wir werden diese Methode in der Haupt-Activity-Klasse verwenden, um auf Benutzerabgriffe auf die Lieder in der Liste zu reagieren, wobei das Lied wiedergegeben wird, das durch das angetippte Listenelement dargestellt wird.

Schritt 3

Wir werden einen Adapter verwenden, um die Lieder der Listenansicht zuzuordnen.  Fügen Sie Ihrer App eine neue Klasse hinzu und benennen Sie sie mit SongAdapter oder einem anderen Namen Ihrer Wahl.  Wenn Sie die Klasse erstellen, geben Sie ihr die Superklasse android.widget.BaseAdapter.  Eclipse sollte folgende Gliederung einfügen:

Sie müssen die folgenden Importe hinzufügen:

Deklarieren Sie in der Klassendeklaration die folgenden Instanzvariablen:

Wir leiten die Songliste von der Haupt-Activity-Klasse weiter und verwenden den LayoutInflater, um die Titel- und Interpretenzeichenfolgen den TextViews im von uns erstellten Liedlayout zuzuordnen.

Nach den Instanzvariablen geben Sie dem Adapter eine Konstruktormethode, um sie zu instanziieren:

Ändern Sie den Inhalt der getCount-Methode, um die Größe der Liste zurückzugeben:

Sie können die Methoden getItem und getItemId unberührt lassen.  Aktualisieren Sie die Implementierung der getView-Methode wie folgt:

Wir legen den Titel und den Künstlertext fest, indem wir die richtige Song-Instanz mithilfe des Positionsindex aus der Liste abrufen und diese Strings den Ansichten zuordnen, die wir der Lied-Layout-Datei hinzugefügt haben.  Wir legen auch die Position als view-Tag fest, damit wir das richtige Lieder spielen können, wenn der Benutzer auf ein Element in der Liste klickt.  Beachten Sie, dass die Layoutdatei song.xml ein OnClick-Attribut enthielt.  Wir verwenden die dort aufgeführte Methode, um das Tag in der Activity abzurufen.

Schritt 3

Zurück in der Haupt-Activity-Klasse erstellen Sie in der onCreate-Methode nach dem Sortieren der Liste eine neue Instanz der Adapter-Klasse und legen Sie sie in der ListView fest:

Wenn Sie die App ausführen, sollte die Liste der Musiktitel auf dem Gerät angezeigt werden. Wenn Sie darauf klicken, löst die App im Moment eine Ausnahme aus, aber wir implementieren den Klick-Händler im nächsten Tutorial.

Schlussfolgerung

Wir haben die App jetzt so eingerichtet, dass sie Lieder vom Benutzergerät liest.  Im nächsten Teil beginnen wir mit der Wiedergabe, wenn der Benutzer einen Titel mit der MediaPlayer-Klasse auswählt.  Wir werden die Wiedergabe mithilfe einer Service-Klasse implementieren, damit sie fortgesetzt wird, wenn der Benutzer mit anderen Apps interagiert.  Schließlich verwenden wir eine MediaController-Klasse, um dem Benutzer die Kontrolle über die Wiedergabe zu geben.

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.