Classe MediaPlayer no Android
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 .
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.
- 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.
- 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.
Etapas para criar um MediaPlayer simples no Android
Etapa 1: Criar um projeto de atividade vazio
- Crie um projeto de atividade do Android Studio vazio. E selecione Kotlin como linguagem de programação.
- Consulte o Android | Como criar / iniciar um novo projeto no Android Studio? para saber como criar um projeto Android Studio de atividade vazia.
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:
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!
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva