Efficiently manage the MediaPlayer class

0

I try to show a series of audios in a list, with their corresponding buttons play, pause and stop each one .. That I have done, not in the best way possible but I do not mind doing it by hand ..

The fact is that when I play an audio, when playing another one, the two come together ... and what I would like is that the audio being played will execute stop () to reproduce the one that has been pressed.

I leave you my Activity: (It's an example with two audios only)

public class Audios extends AppCompatActivity {

private MediaPlayer soundChiste;
private Button btnMoroPlay;
private Button btnMoroPause;
private Button btnMoroStop;
private Button btnAcademiaPlay;
private Button btnAcademiaPause;
private Button btnAcademiaStop;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_audios);

    // El moro y el mercedes
    btnMoroPlay = (Button) findViewById(R.id.buttonMoroPlay);
    btnMoroPause = (Button) findViewById(R.id.buttonMoroPause);
    btnMoroStop = (Button) findViewById(R.id.buttonMoroStop);

    // La academia de la guarcia civil
    btnAcademiaPlay = (Button) findViewById(R.id.buttonAcademiaPlay);
    btnAcademiaPause = (Button) findViewById(R.id.buttonAcademiaPause);
    btnAcademiaStop = (Button) findViewById(R.id.buttonAcademiaStop);



    // EL moro y el mercedes
    btnMoroPlay.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            soundChiste = MediaPlayer.create(getApplicationContext(), R.raw.moroymercedes);
            soundChiste.start();
            btnMoroPause.setEnabled(true);
            btnMoroStop.setEnabled(true);
        }
    });

    btnMoroPause.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            soundChiste.pause();
            btnMoroPlay.setEnabled(true);
            btnMoroPause.setEnabled(false);
        }
    });

    btnMoroStop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            btnMoroStop.setEnabled(false);
            btnMoroPause.setEnabled(false);
            if(soundChiste != null) {
                soundChiste.stop();
                soundChiste.release();
                soundChiste = null;
            }

        }
    });

    // Academia de la guardia civil
    btnAcademiaPlay.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            soundChiste = MediaPlayer.create(getApplicationContext(), R.raw.academiaguarciacivil);
            soundChiste.start();
            btnAcademiaPause.setEnabled(true);
            btnAcademiaStop.setEnabled(true);
        }
    });

    btnAcademiaPause.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            soundChiste.pause();
            btnAcademiaPlay.setEnabled(true);
            btnAcademiaPause.setEnabled(false);
        }
    });

    btnAcademiaStop.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(soundChiste.isPlaying()) {
                soundChiste.stop();
                soundChiste.release();
            }
            btnAcademiaStop.setEnabled(false);
            btnAcademiaPause.setEnabled(false);
        }
    });

  }
}

Maybe a single "player" would be even better and more efficient for all the audios, although I'm starting with Android and Java and I do not have a lot of fluency to get that

    
asked by Rodrypaladin 15.11.2018 в 22:15
source

0 answers