Mediaplayer停止播放我的声音 - Android工作室

时间:2016-02-08 01:08:21

标签: java android class android-studio android-studio-2.0

所以我试图为所有按钮做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 个答案:

答案 0 :(得分:3)

首先,不要在每个onClick中创建新的MediaPlayer。这完全没必要。只需在活动开始时创建一次。

其次,除了调用其start方法之外,看起来你并没有对MediaPlayer做任何事情。 MediaPlayer具有您需要观察的相当复杂的生命周期。请参阅javadoc了解您必须了解的内容才能使其正常运行。

如果你想要做的就是快速触发一些响应按钮的声音,你可能应该使用SoundPool来管理和播放所有声音。对于你正在尝试做的事情,我肯定更喜欢MediaPlayer。它更容易使用。