Die MediaPlayer-Klasse in Android wird zum Abspielen von Mediendateien verwendet. Das sind Audio- und Videodateien. Es kann auch verwendet werden, um Audio- oder Videostreams über das Netzwerk abzuspielen. In diesem Artikel werden also folgende Dinge besprochen:

  • MediaPlayer-Zustandsdiagramm
  • Erstellen eines einfachen Audioplayers mit der MediaPlayer-API. Schauen Sie sich das folgende Bild an. Beachten Sie, dass wir dieses Projekt mit der  Kotlin  -Sprache implementieren werden. 

Mediaplayer Class in Android

Zustandsdiagramm der MediaPlayer-Klasse

  • Das Abspielen der Audio- oder Videodatei mit dem MediaPlayer erfolgt über eine Zustandsmaschine.
  • Das folgende Bild ist das MediaPlayer-Zustandsdiagramm.

State Diagram of the MediaPlayer class

  • Im obigen MediaPlayer-Zustandsdiagramm stellt die ovale Form den Zustand dar, in dem sich die MediaPlayer-Instanz befindet.

  • Es gibt zwei Arten von Bögen, die im Zustandsdiagramm angezeigt werden. Einer mit der einfachen Pfeilspitze stellt die synchronen Methodenaufrufe der MediaPlayer-Instanz dar und einer mit der doppelten Pfeilspitze die asynchronen Aufrufe.

State Diagram of the MediaPlayer class

  • Die Freigabemethode, die eines der wichtigsten Elemente in der MediaPlayer-API ist. Dies hilft bei der Freigabe der für die Mediaplayer-Instanz zugewiesenen Speicherressourcen, wenn sie nicht mehr benötigt werden. Siehe So löschen oder geben Sie Audioressourcen in Android frei? um zu erfahren, wie der vom Mediaplayer zugewiesene Speicher freigegeben werden kann. Damit die Speicherverwaltung entsprechend erfolgt.
  • Wenn die Methode stop() über die Mediaplayer-Instanz aufgerufen wird, muss sie für die nächste Wiedergabe vorbereitet werden.
  • Der MediaPlayer kann mithilfe der seekTo()- Methode an die bestimmte Zeitposition verschoben werden, sodass die MediaPlayer-Instanz die Audio- oder Videowiedergabe ab dieser angegebenen Position fortsetzen kann.
  • Der Fokus der Audiowiedergabe sollte entsprechend mit dem AudioManager-Dienst verwaltet werden, der im Artikel How to Manage Audio Focus in Android besprochen wird. .
  • Das folgende Bild ist die zusammengefasste Version des MediaPlayer-Zustandsdiagramms.

State Diagram of the MediaPlayer class

Schritte zum Erstellen eines einfachen MediaPlayers in Android

Schritt 1: Erstellen Sie ein leeres Aktivitätsprojekt

Schritt 2: Erstellen Sie einen Rohressourcenordner

  • Erstellen Sie einen RAW- Ressourcenordner unter dem res -Ordner und kopieren Sie eine der .mp3 -Dateierweiterungen.

Schritt 3: Arbeiten mit der Datei activity_main.xml

  • Das Layout der Anwendung besteht hauptsächlich aus drei Schaltflächen PLAY, PAUSE und STOP, die verwendet werden, um den Status der MediaPlayer-Instanz zu steuern.
  • Rufen Sie den folgenden Code in der Datei activity_main.xml auf, um die Benutzeroberfläche zu implementieren.

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    tools:ignore="HardcodedText">
 
    <TextView
        android:id="@+id/headingText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="32dp"
        android:text="MEDIA PLAYER"
        android:textSize="18sp"
        android:textStyle="bold" />
 
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/headingText"
        android:layout_marginTop="16dp"
        android:gravity="center_horizontal">
 
        <Button
            android:id="@+id/stopButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:backgroundTint="@color/colorPrimary"
            android:text="STOP"
            android:textColor="@android:color/white" />
 
        <Button
            android:id="@+id/playButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:backgroundTint="@color/colorPrimary"
            android:text="PLAY"
            android:textColor="@android:color/white" />
 
        <Button
            android:id="@+id/pauseButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:backgroundTint="@color/colorPrimary"
            android:text="PAUSE"
            android:textColor="@android:color/white" />
 
    </LinearLayout>
 
</RelativeLayout>

 Ausgabe-UI: 

Mediaplayer Class in Android

Schritt 4: Arbeiten mit der Datei MainActivity.kt 

  • Für die MediaPlayer-Instanz müssen die Attribute festgelegt werden, bevor eine Audio- oder Videodatei abgespielt wird.
  • Rufen Sie Folgendes in der Datei MainActivity.kt auf . Kommentare werden zum besseren Verständnis hinzugefügt. 

Kotlin

import android.media.MediaPlayer
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
 
class MainActivity : AppCompatActivity() {
 
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
 
        // create an instance of mediplayer for audio playback
        val mediaPlayer: MediaPlayer = MediaPlayer.create(applicationContext, R.raw.music)
 
        // register all the buttons using their appropriate IDs
        val bPlay: Button = findViewById(R.id.playButton)
        val bPause: Button = findViewById(R.id.pauseButton)
        val bStop: Button = findViewById(R.id.stopButton)
 
        // handle the start button to
          // start the audio playback
        bPlay.setOnClickListener {
            // start method is used to start
              // playing the audio file
            mediaPlayer.start()
        }
 
        // handle the pause button to put the
        // MediaPlayer instance at the Pause state
        bPause.setOnClickListener {
            // pause() method can be used to
            // pause the mediaplyer instance
            mediaPlayer.pause()
        }
 
        // handle the stop button to stop playing
        // and prepare the mediaplayer instance
        // for the next instance of play
        bStop.setOnClickListener {
            // stop() method is used to completely
            // stop playing the mediaplayer instance
            mediaPlayer.stop()
 
            // after stopping the mediaplayer instance
            // it is again need to be prepared
            // for the next instance of playback
            mediaPlayer.prepare()
        }
    }
}

Ausgabe: Auf Emulator ausführen

Möchten Sie eine schnellere und wettbewerbsfähigere Umgebung, um die Grundlagen von Android zu erlernen?
Klicken Sie hier , um zu einem Leitfaden zu gelangen, der von unseren Experten speziell kuratiert wurde, um Ihre Branche in kürzester Zeit bereit zu machen!