Como executar áudio em aplicações Android
O Android oferece várias maneiras de reproduzir arquivos de áudio em aplicativos, seja para criar um player de música, reproduzir efeitos sonoros ou sons de notificações. Neste post, veremos como executar áudio em aplicações Android utilizando o MediaPlayer
e o SoundPool
para gerenciar e reproduzir arquivos de áudio em uma aplicação Android.
1. Utilizando o MediaPlayer para reproduzir áudio
A classe MediaPlayer
é a mais indicada para reproduzir arquivos de áudio maiores, como músicas. Ela é fácil de configurar e oferece métodos para reproduzir, pausar, parar e controlar o volume.
Passo a passo com MediaPlayer
- Adicionar o arquivo deáÁudio: Primeiro, adicione o arquivo de áudio na pasta
res/raw
do seu projeto. Crie essa pasta caso ela ainda não exista. - Configurar o MediaPlayer: No código da sua atividade (Activity), inicialize o
MediaPlayer
apontando para o arquivo de áudio.
Exemplo de código:
import android.media.MediaPlayer;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private MediaPlayer mediaPlayer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Inicializa o MediaPlayer com o áudio da pasta raw
mediaPlayer = MediaPlayer.create(this, R.raw.meu_audio);
}
// Método para iniciar o áudio
public void iniciarAudio() {
if (mediaPlayer != null) {
mediaPlayer.start();
}
}
// Método para pausar o áudio
public void pausarAudio() {
if (mediaPlayer != null && mediaPlayer.isPlaying()) {
mediaPlayer.pause();
}
}
// Método para parar o áudio e resetar
public void pararAudio() {
if (mediaPlayer != null) {
mediaPlayer.stop();
mediaPlayer.prepareAsync(); // Para que possa ser iniciado novamente
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mediaPlayer != null) {
mediaPlayer.release(); // Libera o recurso do MediaPlayer
mediaPlayer = null;
}
}
}
Explicação:
- start(): Inicia a reprodução do áudio.
- pause(): Pausa a reprodução.
- stop(): Para o áudio completamente.
- release(): Libera os recursos de áudio quando o
MediaPlayer
não é mais necessário.
Dica: Sempre libere o
MediaPlayer
chamandorelease()
no métodoonDestroy()
para evitar consumo excessivo de memória.
2. Reproduzindo sons curtos com SoundPool
Para efeitos sonoros curtos, como cliques de botão ou sons de notificações, o SoundPool
é mais eficiente, pois permite carregar e reproduzir rapidamente pequenos arquivos de áudio.
Passo a passo com SoundPool
- Configurar o SoundPool: No código da sua atividade, inicialize o
SoundPool
e carregue os arquivos de áudio que deseja reproduzir.
Exemplo de código:
import android.media.AudioAttributes;
import android.media.SoundPool;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private SoundPool soundPool;
private int somClique;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Configura o SoundPool com atributos de áudio
AudioAttributes audioAttributes = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_GAME)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build();
soundPool = new SoundPool.Builder()
.setMaxStreams(5)
.setAudioAttributes(audioAttributes)
.build();
// Carrega o som na memória e guarda o ID
somClique = soundPool.load(this, R.raw.som_clique, 1);
}
// Método para tocar o som
public void tocarSom() {
soundPool.play(somClique, 1, 1, 0, 0, 1);
}
@Override
protected void onDestroy() {
super.onDestroy();
soundPool.release(); // Libera os recursos de áudio do SoundPool
soundPool = null;
}
}
Explicação:
- load(): Carrega o som no
SoundPool
e retorna um ID que será usado para reproduzi-lo. - play(): Reproduz o som carregado. Os parâmetros são:
- somClique: ID do som a ser reproduzido.
- volume esquerdo e direito: Controle do volume para cada canal.
- priority: Prioridade do som (não aplicável em todos os dispositivos).
- loop: Número de vezes que o som será repetido (0 = sem repetição).
- rate: Taxa de reprodução (1.0 é o padrão).
Dica: Use o
SoundPool
para sons curtos e rápidos, e oMediaPlayer
para áudios mais longos.
3. Melhorando a experiência do usuário
Considere adicionar controles de áudio ao seu layout para que o usuário possa iniciar, pausar e parar o áudio. Além disso, verifique a condição do MediaPlayer
ou SoundPool
para garantir que o áudio não seja reproduzido em momentos indesejados.
4. Exemplo completo com botões no layout
No arquivo XML do layout, adicione os botões para controle de áudio:
<Button
android:id="@+id/btn_iniciar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Iniciar" />
<Button
android:id="@+id/btn_pausar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Pausar" />
<Button
android:id="@+id/btn_parar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Parar" />
No código da Activity
, conecte os botões para controlar a reprodução de áudio usando o MediaPlayer
:
Button btnIniciar = findViewById(R.id.btn_iniciar);
Button btnPausar = findViewById(R.id.btn_pausar);
Button btnParar = findViewById(R.id.btn_parar);
btnIniciar.setOnClickListener(v -> iniciarAudio());
btnPausar.setOnClickListener(v -> pausarAudio());
btnParar.setOnClickListener(v -> pararAudio());
Outro exemplo prático
Para executar arquivos de áudio, precisamos utilizar a classe MediaPlayer e instanciar um objeto da classe:
import android.media.MediaPlayer;
...
MediaPlayer mp = null;
Se você for usar botões para acionar os áudios, será necessário implementar a interface View.OnClickListener para capturar os eventos de clique dos botões:
...
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
...
Neste caso, foi utilizado um listView para mostrar as opções de áudio:
...
ListView lista = findViewById(R.id.lista);
...
mp = new MediaPlayer();
mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();
}
});
lista.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
if (mp.isPlaying())
mp.stop();
else {
//Verifica a posição do listView selecionada, chama o método para tocar áudio e passa a posição
switch (position) {
case 0:
tocarAudio(position);
break;
case 1:
tocarAudio(position);
break;
case 2:
tocarAudio(position);
break;
case 3:
tocarAudio(position);
break;
}
}
...
O método tocarAudio() recebe a posição do ítem do listView (pos) e executa o áudio de acordo com essa informação:
private void tocarAudio(int pos){
try{
mp.reset();
if(mp != null){
AssetFileDescriptor afd = null; //objeto para ler os dados de som
switch (pos){
case 0:
afd = getResources().openRawResourceFd(R.raw.meu_audio01);
break;
case 1:
afd = getResources().openRawResourceFd(R.raw.meu_audio02);
break;
case 2:
afd = getResources().openRawResourceFd(R.raw.meu_audio03);
break;
case 3:
afd = getResources().openRawResourceFd(R.raw.meu_audio04);
break;
}
if (afd != null) {
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
mp.prepareAsync(); //transfere o objeto mp para o estado preparado
}
}
} catch (Exception e) {
Log.e("ERRO: ", e.getMessage());
}
}
O método onDestroy() libera recursos após a utilização do MediaPlayer:
public void onDestroy() {
if (mp != null) {
mp.release();
mp = null;
}
super.onDestroy(); //chama construtor da classe Activity (herdada)
}
Com o uso do MediaPlayer
e do SoundPool
, você consegue adicionar áudio ao seu aplicativo Android de maneira eficiente, melhorando a experiência do usuário e adicionando interatividade à aplicação.
Escolha o método mais adequado com base no tipo e tamanho do áudio que você precisa, e sempre libere os recursos de áudio para garantir o bom desempenho do aplicativo.
Além do curso, você receberá mais 3 BÔNUS, o curso completo de JavaScript e também o Curso de React JS e Node JS onde vamos desenvolver aplicações e sistemas web do zero.
Garanta a sua vaga ainda hoje e aproveite a nossa super promoção!
CLIQUE NA IMAGEM ABAIXO E SAIBA MAIS DETALHES:
Dúvidas ou sugestões sobre como executar áudio em aplicações Android? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits
Sobre o Autor
0 Comentários