Android

Como executar áudio em aplicações Android

No desenvolvimento de aplicações para Android é provável que você, em algum momento, precise utilizar recursos de reprodução de áudio ou efeitos sonoros. Neste post veja como executar áudio em aplicações Android.

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)
    }
Quer aprender de forma prática como desenvolver apps nativos para iOS e Android, construindo aplicativos do zero até aplicativos completos com Integrações com API´s, Banco de dados, Autenticação, Mapas, Animações e Design?

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:

Link do curso:  https://go.hotmart.com/C82684520Q

Classe handler em Android

Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits

Bene Silva Júnior

Bacharel em Sistemas de Informação pelo Instituto Paulista de Pesquisa e Ensino IPEP. Apaixonado por tecnologias e games do tempo da vovó!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *