通过单击播放按钮重复播放音频时,MediaPlayer 给出错误(-38,0)。我正在尝试制作一个像音乐垫这样的应用程序,它第一次播放正常,但是当你点击多次时,它进入挂起模式并显示错误。
问问题
471 次
2 回答
0
媒体播放器缓冲区已满。SoundPool
改为使用
int SoundArr[] = { R.raw.birds_whistling, R.raw.come_bye,
R.raw.cute_whistle, R.raw.kill_bill_whistle, R.raw.look_back,
};
SoundPool mSoundPool;
HashMap<Integer,Integer> mSoundPoolMap;
AudioManager mAudioManager;
mSoundPool=(SoundPool) SoundImageAdaptor.mSoundPool;
mSoundPoolMap =SoundImageAdaptor.mSoundPoolMap;//i'm using a grid view adaptor
mAudioManager = (AudioManager)mContext.getSystemService(Context.AUDIO_SERVICE);
/* code to that ensures the sound plays even when media player buffer gets full*/
if(!(mSoundPoolMap.containsKey(position)))
addSound(position, SoundArr[position]);
playSound(position);
您还可以查看此链接如何在游戏中正确使用 SoundPool?
于 2012-10-13T10:40:35.783 回答
0
我假设您再次单击时只需再次准备具有相同来源的媒体播放器。您需要释放旧数据
mMediaPlayer.release();
或者如果它是相同的音频,最好使用
mMediaPlayer.seekTo(0)
再次跳到起点,无需另一轮准备。
Soundpoool 非常适合小文件,但不能处理更大的音频文件。
更新:
实际上只是在我的一个应用程序中遇到了同样的错误:所以我的错误是
mMediaPlayer.stop();
mMediaPlayer.seekTo(0);
这是不正确的,因为停止后您必须再次准备。正确的方法是
mMediaPlayer.pause();
mMediaPlayer.seekTo(0);
官方文档一如既往的很好
http://developer.android.com/reference/android/media/MediaPlayer.html
于 2012-10-14T02:53:49.427 回答