Como liberar corretamente o Android MediaPlayer
Eu estou tentando adicionar um botão ao meu aplicativo android onde ele toca um MP3 quando o botão é tocado. Eu comecei a trabalhar, mas sem uma maneira de liberar o objeto mediaPlayer - portanto, ele continua jogando mesmo depois de deixar a atividade. Se eu inicializar o objeto MediaPlayer fora do meu método react () (o que é chamado quando o botão é pressionado), ele faz com que o aplicativo seja forçado a fechar quando a atividade é aberta. Mas se eu inicializar o MediaPlayer dentro do método react () então eu não posso usar o mplayer.release no método onQuit (). O que eu não estou vendo aqui?
public void react(View view) {
MediaPlayer mediaPlayer = MediaPlayer.create(ToBeOrNot.this, R.raw.achord);
mediaPlayer.start();
}
protected void onStop(){
mediaPlayer.release();
mediaPlayer = null;
}
Não funciona por razões óbvias e
MediaPlayer mediaPlayer = MediaPlayer.create(ToBeOrNot.this, R.raw.achord);
public void react(View view) {
mediaPlayer.start();
}
protected void onStop(){
mediaPlayer.release();
mediaPlayer = null;
}
Faz com que force fechar.
Atualizar: Aqui está a classe java inteira.
public class ToBeOrNot extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_to_be_or_not);
}
MediaPlayer mediaPlayer;
public void react(View view) {
mediaPlayer = MediaPlayer.create(ToBeOrNot.this, R.raw.achord);
mediaPlayer.start();
}
protected void onStop(){
mediaPlayer.release();
mediaPlayer = null;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
//getMenuInflater().inflate(R.menu.activity_to_be_or_not, menu);
// Locate MenuItem with ShareActionProvider
return true;
}
}
Eu acho que o que isso faz é relativamente auto-explicativo. Quando chamado, mostra algum texto mais um botão que quando tocado inicia uma gravação tocando. Quando alguém apertar o botão Voltar, ele deve voltar para a atividade anterior e interromper a gravação. Obrigado por me ajudar!