Java Android Studio | MediaPlayer |我的功能可以运行一次,然后应用程序将崩溃| MediaPlayer:错误(1,-19)

Java Android Studio | MediaPlayer |我的功能可以运行一次,然后应用程序将崩溃| MediaPlayer:错误(1,-19),java,android,Java,Android,我第一次按下它时,按钮和音频工作正常,第二次出现错误:再次打开应用程序自从我上次接触Android已经有一段时间了,我创建了自己的声音播放方法,考虑到我发布了一个应用程序,它工作正常,所以可能会有所帮助 //this is inside onCreate function //layoutRost is declared as private, inside onCreate is initialized, also speak_rost... layoutRost.setOnClickList

我第一次按下它时,按钮和音频工作正常,第二次出现错误:再次打开应用程序

自从我上次接触Android已经有一段时间了,我创建了自己的声音播放方法,考虑到我发布了一个应用程序,它工作正常,所以可能会有所帮助

//this is inside onCreate function
//layoutRost is declared as private, inside onCreate is initialized, also speak_rost...
layoutRost.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                speak_rost.start();

                speak_rost.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer mp) {
                        speak_rost.release();

                    }
                });
            }
        });

每次有东西玩时,我都会将资源id传递给此方法

谢谢您的回答,我现在就试试。int resid必须是int layoutRost例如,是我的id吗?我有点困惑…resid应该是您试图播放的资源的id,例如,假设您有一个名为niceSound的文件,它位于您的res文件夹中,位于另一个名为raw的文件夹中;路径将类似于appname/res/raw/niceSound.wav,为了播放,您将这样调用playMedia:playMedia(R.raw.niceSound);我的函数:
public void playSound(我不知道放在这里什么){speak_rost=MediaPlayer.create(this,R.raw.asa);speak_rost.start();speak_rost.setOnCompletionListener(new MediaPlayer.OnCompletionListener(){public void onCompletion(MediaPlayer mp){mp.release()}});}
好的,我理解在speak_rost=MediaPlayer.create(这个,R.raw.asa);但是我不知道在“public void playSound(…)”中放什么,为什么是int…然后试着用一种你每次想播放声音时都会用到的方法来做这个任务,也许会有帮助,layoutRost是你活动中使用的布局吗?
//method that plays a sound effects
public void playMedia(int resid){
    mediaPlayer = MediaPlayer.create(this,resid);
    mediaPlayer.start();
    mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        public void onCompletion(MediaPlayer mp) {
            mp.release();
        }
    });
}
//just initialize inside ClickListener, speak_rost, and after .setOnCompletionListener, I put speak_rost().start; that was ALL, very nice problem, now all my 50+ buttons/layouts are "in the right form" to play 100+ time, every time I needed. Thank you.
layoutRost.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                speak_rost = MediaPlayer.create(hundred.this, R.raw.asa);
                speak_rost .setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                    public void onCompletion(MediaPlayer mysound) {
                        mysound.release();
                    }

                });
                speak_rost .start();
            }
        });