Class MediaPlayer travando celular

Boa Tarde!!

Sou iniciante em java e começei a brincar com apps Android,
Estou utilizando a class mediaplayer para executar sons. A app é bem simples, sao varios imagebuttons com fotos de animais e cada um que clica, solta um som do animal correspondente
porem no decorrer do uso da app a mesma comeca ficar lenta e trava o telefone, so tirando a bateria… oque pode ser?

abaixo meu codigo

package iti.sons.animais;
import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;

public class SonsDeAnimaisActivity extends Activity {
/** Called when the activity is first created. */
MediaPlayer player = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
PreparaBotoes();
}

private void PreparaBotoes()
{
	ImageButton ImgCachorro = (ImageButton) findViewById(R.id.ImgCachorro);

    ImgCachorro.setOnClickListener(new ImageButton.OnClickListener(){  
          public void onClick(View v) {  
        	  int i = ExecAudio( R.raw.cachorro);
          }  
     });  
    
    ImageButton ImgCavalo = (ImageButton) findViewById(R.id.imgcavalo);

    ImgCavalo.setOnClickListener(new ImageButton.OnClickListener(){  
          public void onClick(View v) {  
        	  int i = ExecAudio( R.raw.cavalo);
          }  
     });  
    
    ImageButton ImgGato = (ImageButton) findViewById(R.id.ImgGato);

    ImgGato.setOnClickListener(new ImageButton.OnClickListener(){  
          public void onClick(View v) {  
        	  int i = ExecAudio( R.raw.gato);
          }  
     }); 
    
    ImageButton ImgLeao = (ImageButton) findViewById(R.id.ImgLeao);

    ImgLeao.setOnClickListener(new ImageButton.OnClickListener(){  
          public void onClick(View v) {  
        	  int i = ExecAudio( R.raw.leao);
          }  
     }); 
    
    ImageButton ImgElefante = (ImageButton) findViewById(R.id.ImgElefante);

    ImgElefante.setOnClickListener(new ImageButton.OnClickListener(){  
          public void onClick(View v) {  
        	  int i = ExecAudio( R.raw.elefante);
          }  
     }); 
            

}

public int ExecAudio(int resid)
{

	player = MediaPlayer.create(this, resid);
	player.start();
	
	try {
		Thread.sleep(player.getDuration()+500);
		
	} catch (InterruptedException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}

	player.stop();
	player.release();
	player=null;
	return 1;
}

}

Thread.sleep!

:slight_smile:

Beleza Felipe!

Coloquei a thread sleep para dar uma segurada antes de dar o stop e o realese, senao ele corta a execucao do som no meio, sem este thread sleep o problema de travar tbm estava acontecendo

Obrigado!

Cara, você precisa colocar esse MediaPlayer em uma Thread diferente da UI.

Tenta fazer ela por Service! :slight_smile:

Abraço;

Nossa…

Vou pesquisar do que se trata, sou iniciante…
é dificil vc me passar um exemplo?

Obrigado Felipe.