Class MediaPlayer travando celular

4 respostas
I

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;

<a class="mention" href="/u/override">@Override</a>

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;
}

}

4 Respostas

felipebonezi

Thread.sleep!

:slight_smile:

I

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!

felipebonezi

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

Tenta fazer ela por Service! :slight_smile:

Abraço;

I

Nossa…

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

Obrigado Felipe.

Criado 5 de maio de 2012
Ultima resposta 7 de mai. de 2012
Respostas 4
Participantes 2