Tengo una aplicación simple que tiene tres botones, puede aumentar un número usando el botón de pulso y disminuirlo usando el botón menos y si este número es mayor a 10, el sonido comenzará y si el número es menor a 10, el sonido se detendrá.
y hay un tercer botón para silenciar el sonido que comenzó aumentando y disminuyendo el número y ejecutar el sonido cuando vuelve a hacer clic en el mismo botón. este botón de silencio debe silenciar el sonido en el primer clic y en el y ejecutarlo nuevamente en el segundo clic.
mi código funciona bien, pero tuve un pequeño problema que es cuando hago clic en el tercer botón nuevamente, el sonido no comienza, solo silencia el sonido en el primer clic.
aquí mi código para los tres botones:
mp = MediaPlayer.create(this, R.raw.gg); final ImageButton btn3= (ImageButton) findViewById(R.id.imgBtnSound); btn3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { clicked = true; if(clicked) { mp.setLooping(false); mp.pause(); clicked = false; } else if(clicked == false){ mp.setLooping(true); mp.start(); clicked = true; } } }); tv = (TextView) findViewById(R.id.TextNumber); ImageButton btn1= (ImageButton) findViewById(R.id.imgBtnUp); ImageButton btn2= (ImageButton) findViewById(R.id.imgBtnDown); btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { result = result + 1; tv.setText("" + result); //check if need to play or not boolean needToPlay = result > 10; // if need to play, play when it's already not playing if (needToPlay && !mp.isPlaying()) { mp.setLooping(true); mp.start(); } } }); btn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { result = result - 1; tv.setText("" + result); //check if need to play or not boolean needToPause = result <= 10; // if need to pause then pause only if it's playing if (needToPause && mp.isPlaying()) { mp.setLooping(false); mp.pause(); } } });