android - 媒体播放器在一段时间后停止工作

标签 android button audio onclick media-player

我有一个音板,一切正常,但是当我在一段时间后单击按钮时,声音刚刚停止播放..这是代码:

    public class MainActivity extends AppCompatActivity{


        //Sounds/Remixes MediaPlayer
        MediaPlayer sound1, sound2, sound3, sound4, remix1, remix2, remix3, remix4;

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


            //Sound MediaPlayers
            sound1= MediaPlayer.create(this, R.raw.sound1);
            sound2= MediaPlayer.create(this, R.raw.sound2);
            sound3= MediaPlayer.create(this, R.raw.sound3);
            sound4= MediaPlayer.create(this, R.raw.sound4);



            //Remixes MediaPlayer
            remix1= MediaPlayer.create(this, R.raw.remix1);
            remix2= MediaPlayer.create(this, R.raw.remix2);
            remix3= MediaPlayer.create(this, R.raw.remix3);
            remix4= MediaPlayer.create(this, R.raw.remix4);




        }

    //Songs stop playing when closing/switching the App
        @Override
        protected void onPause() {
            remix1.pause();
            remix2.pause();
            remix3.pause();
            remix4.pause();
            super.onPause();
        }


    //Remix onClick's
    public void remix1(View view){
        if(remix1.isPlaying() == true){
            remix1.pause();
        }else{
            remix1.start();
        }
    }
    public void remix2(View view){
        if(remix2.isPlaying() == true){
            remix2.pause();
        }else{
            remix2.start();
        }
    }
    public void remix3(View view){
        if(remix3.isPlaying() == true){
            remix3.pause();
        }else{
            remix3.start();
        }
    }
    public void remix4(View view){
        if(remix4.isPlaying() == true){
            remix4.pause();
        }else{
            remix4.start();
        }
    }




    //sound onClick's 
    public void sound1(View view){
        sound1.start();
    }
    public void sound2(View view){
        sound2.start();
    }
    public void sound3(View view){
        sound3.start();
    }
    public void sound4(View view){
        sound4.start();
    }

}

这是我的代码,只有 4 个声音和 4 个混音。

声音时长 3 秒,混音时长 3 分钟。

这是我的应用程序,您可以尝试一下,有时您会看到按钮停止工作:https://play.google.com/store/apps/details?id=com.aaron.waller.angelasoundboard

我找到的唯一解决方案是每次使用后清理 MediaPlayer,我该怎么做?

最佳答案

要在每次使用后清理媒体播放器,您应该调用

mediaPlayer.release();

但是,如果您需要的只是在 create 之后立即将 mediaPlayer 恢复到其状态方法
mediaPlayer.reset();

应该够了

UPD

在您的情况下,将此代码添加到 onCreate对于您使用的每个 mediaPlayer。
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    public void onCompletion(MediaPlayer mp) {
        mp.reset();
        //if reset doesnt give you what you need use mp.release() instead
        //but dont forget to call MediaPlayer.create  
        //before next mediaPlayer.start() method

    }
});

关于android - 媒体播放器在一段时间后停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42531883/

相关文章:

python - Tkinter/Python - 调整窗口大小时禁用按钮大小调整

HTML 按钮元素 - 内部的 svg 图像 - 奇怪的间隙和定位

ios - 第一次按按钮不起作用,但第二次就可以了

java - 在Java游戏中实现声音

android - 当 layout_weight 分配给微调器时微调器上的 SetSelection 崩溃

安卓 map 错误: Couldn't get connection factory client (with a correct ApiKey)

java - 无法从我的应用程序连接到 IMS apn

android - 撰写导航 - 替换起始路线并清除返回堆栈

c - 使用 Allegro5 在 C 中播放声音文件

audio - 如何在您的网站PHP/Flash上​​播放音频?