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/rawdo seu projeto. Crie essa pasta caso ela ainda não exista. - Configurar o MediaPlayer: No código da sua atividade (Activity), inicialize o
MediaPlayerapontando 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
MediaPlayernão é mais necessário.
Dica: Sempre libere o
MediaPlayerchamandorelease()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
SoundPoole 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
SoundPoole 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
SoundPoolpara sons curtos e rápidos, e oMediaPlayerpara á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.
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
Aprenda a consertar o próprio computador como um profissional!
Especialize-se em manutenção preventiva e corretiva, diagnósticos de defeitos e upgrades com aulas passo a passo sem enrolação.
Torne-se também um técnico diferenciado e conquiste o emprego dos seus sonhos com este curso completo de Montagem e Manutenção de Desktops e Notebooks.
Sobre o Autor



0 Comentários