A classe MediaPlayer no Android é usada para reproduzir arquivos de mídia. Esses são arquivos de áudio e vídeo. Também pode ser usado para reproduzir fluxos de áudio ou vídeo na rede. Portanto, neste artigo, as coisas discutidas são:

  • Diagrama de estado do MediaPlayer
  • Criação de um reprodutor de áudio simples usando a API MediaPlayer. Dê uma olhada na imagem a seguir. Observe que vamos implementar este projeto usando a   linguagem Kotlin

Classe Mediaplayer no Android

Diagrama de estado da classe MediaPlayer

  • A reprodução do arquivo de áudio ou vídeo usando o MediaPlayer é feita em uma máquina de estado.
  • A imagem a seguir é o diagrama de estado do MediaPlayer.

Diagrama de estado da classe MediaPlayer

  • No diagrama de estado do MediaPlayer acima, a forma oval representa o estado da instância do MediaPlayer em que reside.

  • Existem dois tipos de arcos mostrados no diagrama de estado. Um com a ponta de seta única representa as chamadas de método síncronas da instância MediaPlayer e outro com a ponta de seta dupla representa as chamadas assíncronas.

Diagrama de estado da classe MediaPlayer

  • O método de liberação, que é um dos elementos importantes na API MediaPlayer. Isso ajuda a liberar os recursos de memória alocados para a instância do Mediaplayer quando não forem mais necessários. Consulte Como limpar ou liberar recursos de áudio no Android? saber como a memória alocada pelo Mediaplayer pode ser liberada. Para que a gestão da memória seja feita em conformidade.
  • Se o método stop() for chamado usando a instância do Mediaplayer, ele precisará ser preparado para a próxima reprodução.
  • O MediaPlayer pode ser movido para a posição de tempo específica usando o método seekTo() para que a instância do MediaPlayer possa continuar reproduzindo o áudio ou vídeo daquela posição especificada.
  • O foco da reprodução de áudio deve ser gerenciado de acordo com o serviço AudioManager, que é discutido no artigo Como gerenciar o foco de áudio no Android? .
  • A imagem a seguir é a versão resumida do diagrama de estado do MediaPlayer.

Diagrama de estado da classe MediaPlayer

Etapas para criar um MediaPlayer simples no Android

Etapa 1: Criar um projeto de atividade vazio

Etapa 2: crie uma pasta de recursos brutos

  • Crie uma pasta de recursos brutos na pasta res e copie uma da extensão de arquivo .mp3.

Etapa 3: Trabalhando com o arquivo activity_main.xml

  • O layout do aplicativo consiste principalmente em três botões PLAY, PAUSE e STOP, que são usados ​​para controlar o estado da instância do MediaPlayer.
  • Chame o seguinte código dentro do arquivo activity_main.xml para implementar a UI.
<?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>

 IU de saída: 

Classe Mediaplayer no Android

Etapa 4: Trabalhar com o arquivo MainActivity.kt 

  • A instância do MediaPlayer precisa que os atributos sejam definidos antes de reproduzir qualquer arquivo de áudio ou vídeo.
  • Chame o seguinte dentro do arquivo MainActivity.kt . Comentários são adicionados para melhor compreensão. 
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()
        }
    }
}

Saída: Executar no emulador

Quer um ambiente mais competitivo e acelerado para aprender os fundamentos do Android?
Clique aqui para acessar um guia com curadoria exclusiva de nossos especialistas com o objetivo de torná-lo pronto para a indústria em nenhum momento!