android播放音效。

时间:2014-11-17 16:19:13

标签: java android audio

我在Android中播放声音时遇到问题。

我的第一次尝试都在我的onButtonClick功能中,这对于大约20次点击非常有效。然后声音停止了。而且我相信它使用了android的整个声音池,因为我所有的其他应用程序都停止了声音。

public void onButtonClick(View view)
{

MediaPlayer clickSound = MediaPlayer.create(this, R.raw.click);
clickSound.start();

//... other onButtonCode

}

我已经改变了一点,所以现在这是一个全局变量

MediaPlayer clickSound;

并在我的onCreate()方法中实例化。 onbuttonClick现在有clickSound.start() 但这并没有像我想象的那样发挥作用。声音似乎是随机的。有时点击会在那里。有时会没有声音。或者有时候声音会有一点点,并在声音完成之前结束。从好的方面来看,它似乎并没有完全填满声音池,所以我可以继续得到一些“声音”。在我测试时发出声音。

为了使声音功能正常,我缺少什么? 我试图添加一个clickButton.stop(),但这使得我的声音根本不起作用,可能是因为它在它明显之前就停止了。

2 个答案:

答案 0 :(得分:0)

您应该在使用后释放资源。

clickSound.release();
clickSound = null;

我建议遵循:

在onResume中初始化播放器:

clickSound = MediaPlayer.create(this, R.raw.click);

在onPause中发布资源:

clickSound.release();
clickSound = null;

使用按钮播放声音:

clickSound.start();

答案 1 :(得分:0)

改为使用SoundPool

   soundPool = new SoundPool(1, AudioManager.STREAM_SYSTEM, 0);
   resId = soundPool.load(context, R.raw.click, 1);

播放:

private void playSpecSound(int resId)
{
    if(soundPool != null)
    {
        if(0 == soundPool.play(resId, 1f, 1f, 0, 0, 1.0f))
        {
             Log.e(TAG, "Play specified sound failed !");
        }
    }
}