MediaPlayer Class en Android se usa para reproducir archivos multimedia. Esos son archivos de audio y video. También se puede usar para reproducir secuencias de audio o video a través de la red. Entonces, en este artículo, las cosas discutidas son:
- Diagrama de estado de MediaPlayer
- Creación de un reproductor de audio simple usando la API de MediaPlayer. Echa un vistazo a la siguiente imagen.
Diagrama de estado de la clase MediaPlayer
- La reproducción del archivo de audio o video mediante MediaPlayer se realiza mediante una máquina de estado.
- La siguiente imagen es el diagrama de estado de MediaPlayer.
- En el diagrama de estado de MediaPlayer anterior, la forma ovalada representa el estado en el que reside la instancia de MediaPlayer.
- Hay dos tipos de arcos que se muestran en el diagrama de estado. Uno con una sola punta de flecha representa las llamadas de método síncrono de la instancia de MediaPlayer y uno con la doble punta de flecha representa las llamadas asíncronas.
- El método de lanzamiento, que es uno de los elementos importantes en la API de MediaPlayer. Esto ayuda a liberar los recursos de memoria asignados para la instancia de Mediaplayer cuando ya no se necesita. Consulte ¿Cómo borrar o liberar recursos de audio en Android? para saber cómo se puede liberar la memoria asignada por el Mediaplayer. Para que la gestión de la memoria se haga en consecuencia.
- Si se llama al método stop() usando la instancia de Mediaplayer, entonces debe prepararse para la próxima reproducción.
- El MediaPlayer se puede mover a la posición de tiempo específica usando el método seekTo() para que la instancia de MediaPlayer pueda continuar reproduciendo el Audio o Video desde esa posición especificada.
- El enfoque de la reproducción de audio debe administrarse en consecuencia utilizando el servicio AudioManager que se analiza en el artículo ¿Cómo administrar el enfoque de audio en Android? .
- La siguiente imagen es la versión resumida del diagrama de estado de MediaPlayer.
Pasos para crear un MediaPlayer simple en Android
Paso 1: crear un proyecto de actividad vacío
- Cree un proyecto de Android Studio de actividad vacío. Y seleccione Kotlin como lenguaje de programación.
- Consulte Android | ¿Cómo crear/comenzar un nuevo proyecto en Android Studio? para saber cómo crear un proyecto de Android Studio de actividad vacía.
Paso 2: Cree una carpeta de recursos sin procesar
- Cree una carpeta de recursos sin formato en la carpeta res y copie una de las extensiones de archivo .mp3.
Paso 3: trabajar con el archivo activity_main.xml
- El diseño de la aplicación consta principalmente de tres botones PLAY, PAUSE y STOP, que se utilizan para controlar el estado de la instancia de MediaPlayer.
- Invoque el siguiente código dentro del archivo activity_main.xml para implementar la interfaz de usuario.
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>
Interfaz de usuario de salida:
Paso 4: trabajar con el archivo MainActivity.kt
- La instancia de MediaPlayer necesita que se configuren los atributos antes de reproducir cualquier archivo de audio o video.
- Invoque lo siguiente dentro del archivo MainActivity.kt . Se agregan comentarios para una mejor comprensión.
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() } } }
Salida: ejecutar en el emulador
Publicación traducida automáticamente
Artículo escrito por adityamshidlyali y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA