我的应用播放选定数量的短音(存储在res / raw中)。声音是在包含这些声音的数组soundfileFR []中随机选择的。 单击一个按钮即可播放所选择的声音数量,使用“for”循环播放一个接一个的声音。 该应用程序运行得非常好...除了,由于一些未知的原因,它将永远不会连续播放超过30个这样的声音,即如果我启动应用程序并选择“35”作为要播放的声音的数量,它不会播放最后五个声音。或者,如果我首先选择“20”它会播放所有声音,然后我选择“12”并且它不播放最后2个声音。
每个声音都是“.wav”,仅重约50 Ko。 有某种内存限制吗? 我是否需要在每个声音之间“重置”媒体播放器(?)?如果是这样的话?
“for”循环如下:
for (int n = 1; n <= totalNb; n++) {
final int randomNb;
final int nn = n;
randomNb = (int)(Math.floor(Math.random()*(10))); // random nb between 0 and 9
handlerH.postDelayed(new Runnable(){
public void run() {
mp = MediaPlayer.create(getBaseContext(), soundfileFR[randomNb]); // initializes a sound for folder res/raw
mp.seekTo(0);
mp.start(); // plays the sound
pgbSpoken.setProgress(nn); // incrementation of the progressBar
}
},
initialdelay + n * intervalrep);
} // end of "for"
感谢您的帮助。
皮尔
答案 0 :(得分:1)
这个确切的错误也发生在使用html5的默认浏览器中。仅播放前30个声音。如果你试着打31,你什么也听不到。如果您播放以前播放的声音,则可以。
您可以使用音频精灵。这是当今常见的解决方案,你会发现很多Android的实现。
你找到了解决方案吗?