我在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()
,但这使得我的声音根本不起作用,可能是因为它在它明显之前就停止了。
答案 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 !");
}
}
}