繁体   English   中英

Android:24次点击后声音无法播放

[英]Android:Sound doesn't play after 24th click

因此,我是一名编程初学者,在制作带有8个按钮的简单音板应用程序时,遇到一个奇怪的问题,即在按下24个按钮后它停止播放声音。这是Java代码:

public class MainActivity extends AppCompatActivity {

    MediaPlayer mediaPlayer;
    int i = 0;
    public void playSound(View view){

            switch(view.getId())
            {
                case R.id.button1:
                    mediaPlayer = MediaPlayer.create(this, R.raw.doyouspeakenglish);
                    break;
                case R.id.button2:
                    mediaPlayer = MediaPlayer.create(this, R.raw.goodevening);
                    break;
                case R.id.button3:
                    mediaPlayer = MediaPlayer.create(this, R.raw.hello);
                    break;
                case R.id.button4:
                    mediaPlayer = MediaPlayer.create(this, R.raw.howareyou);
                    break;
                case R.id.button5:
                    mediaPlayer = MediaPlayer.create(this, R.raw.ilivein);
                    break;
                case R.id.button6:
                    mediaPlayer = MediaPlayer.create(this, R.raw.mynameis);
                    break;
                case R.id.button7:
                    mediaPlayer = MediaPlayer.create(this, R.raw.please);
                    break;
                case R.id.button8:
                    mediaPlayer = MediaPlayer.create(this, R.raw.welcome);
                    break;
                default:
                    throw new RuntimeException("Unknown button ID");
            }
            i++;
        Log.i("klik", Integer.toString(i));
            mediaPlayer.start();
    }

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

这是错误消息,我不允许以新用户身份发布图像,因此这是一个链接

您没有释放媒体播放器资源,因此也需要关闭并释放它们。

Releasing the MediaPlayer

public void playSound(View view){
        if (null != mediaPlayer) {
            mediaPlayer.stop();
            mediaPlayer.release();
        }

        switch(view.getId())
        {
            case R.id.button1:
                mediaPlayer = MediaPlayer.create(this, R.raw.doyouspeakenglish);
                break;
            case R.id.button2:
                mediaPlayer = MediaPlayer.create(this, R.raw.goodevening);
                break;
            case R.id.button3:
                mediaPlayer = MediaPlayer.create(this, R.raw.hello);
                break;
            case R.id.button4:
                mediaPlayer = MediaPlayer.create(this, R.raw.howareyou);
                break;
            case R.id.button5:
                mediaPlayer = MediaPlayer.create(this, R.raw.ilivein);
                break;
            case R.id.button6:
                mediaPlayer = MediaPlayer.create(this, R.raw.mynameis);
                break;
            case R.id.button7:
                mediaPlayer = MediaPlayer.create(this, R.raw.please);
                break;
            case R.id.button8:
                mediaPlayer = MediaPlayer.create(this, R.raw.welcome);
                break;
            default:
                throw new RuntimeException("Unknown button ID");
        }
        i++;
    Log.i("klik", Integer.toString(i));
        mediaPlayer.start();
}

请阅读媒体播放器上的注释:

使用MediaPlayer完成后,应调用release()释放资源。 如果未发布,那么太多MediaPlayer实例将导致异常。

因此,在再次调用MediaPlayer.create之前,只需调用

mediaPlayer.stop();
mediaPlayer.release();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM