2

我已经看过其他帖子,但我无法弄清楚问题。

所以我正在设计一个计算器,所有的数字都有一个 onclick 方法,所有的运算符都有不同的 . 我有一个方法 playSound() ,其中代码是:

public void playSound(){

         MediaPlayer mp= MediaPlayer.create(this, R.raw.btn);

        setVolumeControlStream(AudioManager.STREAM_MUSIC);

        if(mp.isPlaying())
        {
            mp.stop();
            mp.reset();
        }
            mp.start();


    }

我试过释放到。谁能告诉我写这个的有效方法。我在 onclick 方法中调用此方法。但大约 30 次点击后它停止了。我也尝试过创建 MediaPlayer 全局,但它仍然停止。我读过媒体播放器实际上很昂贵,所以我们可以使用声音池。但即使是 soundpool 也已被弃用。有什么帮助吗?

4

2 回答 2

1

实现 onComplition() 监听器,在那个监听器中你可以调用 release 方法

您创建了多个媒体播放器实例而不是发布媒体播放器实例,这就是问题出现的原因在您发布调用后,您的问题将得到解决

于 2016-08-27T19:38:59.970 回答
-1

将 MediaPlayer 初始化为类属性:

MediaPlayer media = MediaPlayer.create(this,R.raw. btn);

在 playSound() 方法中:

public void playSound(){
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
        mp.reset();
        mp.start();
    }
于 2016-08-27T19:52:33.053 回答