Медиаплеер перестал проигрывать мой звук - Android studio

Так что я пытался сделать Onclick для всех кнопок... всякий раз, когда пользователь нажимает на какую-то кнопку, он переходит на OnClickButton, а затем воспроизводит некоторый звук... для button1 он будет проигрывать mp1 для кнопки 2, воспроизводить sound2 .... так что все работает хорошо, но когда я много нажимаю на кнопки через некоторое время, звук просто перестал воспроизводиться.. это код:

public void OnClick(View v) {


    final MediaPlayer mp1 = MediaPlayer.create(this, R.raw.sound1);
    final MediaPlayer mp2 = MediaPlayer.create(this, R.raw.sound2);
    final MediaPlayer mp3 = MediaPlayer.create(this, R.raw.sound3);
    final MediaPlayer mp4 = MediaPlayer.create(this, R.raw.sound4);

    TextView mytv = (TextView) findViewById(R.id.tvMytimer);
    int id = v.getId();
    if (id == R.id.btComp1 || id==R.id.btUser1)
    {
        mytv.setText("Button 1");
        mp1.start();

    }
    if (id == R.id.btComp2 || id==R.id.btUser2)
    {
        mytv.setText("Button 2");
        mp2.start();

    }
    if (id == R.id.btComp3 || id==R.id.btUser3)
    {
        mytv.setText("Button 3");

        mp3.start();

    }
    if (id == R.id.btComp4 || id==R.id.btUser4)
    {
        mytv.setText("Button 4");

        mp4.start();

    }


}

Я также отключаю все случайные звуки кнопок, потому что все, что я хотел, это звук, это мои звуки..

(disable with setSoundEffectsEnabled(false) 

1 ответ

Прежде всего, не создавайте новый MediaPlayer в каждом onClick. Это совершенно не нужно. Просто создайте их один раз, когда начнется действие.

Во-вторых, похоже, что вы ничего не делаете с MediaPlayer, кроме вызова его метода запуска. MediaPlayer имеет довольно сложный жизненный цикл, который вы должны наблюдать. Посмотрите javadoc, чтобы понять, что вы должны понимать, чтобы заставить его работать правильно.

Если все, что вы хотите сделать, это быстро запустить некоторые звуки для воспроизведения в ответ на кнопки, вам, вероятно, следует вместо этого использовать SoundPool для управления всеми звуками и их воспроизведения. Я определенно предпочел бы это по сравнению с MediaPlayer для того, что вы пытаетесь сделать. С ним намного проще работать.

Другие вопросы по тегам