我正在开发一个Android应用程序,为孩子们讲故事,我正在使用PagerAdapter 因此,一旦用户在页面之间导航,将为每个页面播放音频,持续时间约为30秒 所以,我想过使用SoundPool,但我遇到了两个问题:
1-曾经是当用户选择特定页面时声音没有下载所以没有播放声音,但我通过考虑添加大小小于1兆的声音来解决这个问题 (P.S从一开始我在Raw文件夹上使用.ogg文件)
2-我添加的声音在选择页面时播放正常但未完成到最后
之后我使用了MediaPlayer,但问题是当用户选择另一个页面时它会崩溃
@Override
public void onPageSelected(int position) {
selectedpage=pager.getCurrentItem();
switch (selectedpage)
{case 0 :
Log.i("pageSelected",""+selectedpage);
break;
case 1 :
if (soundplayer1.isPlaying())
{
soundplayer1.stop();
soundplayer1.release();
}
else
soundplayer2.start();
soundplayer2.start();
Log.i("pageSelected",""+selectedpage);
break;
case 2 :
if (soundplayer2.isPlaying())
{
soundplayer2.stop();
soundplayer2.release();
Log.i("pageSelected","IsPlaying");
}
else
soundplayer1.start();
soundplayer1.start();
Log.i("pageSelected","Start");
break;
}
}
先谢谢你,
答案 0 :(得分:1)
我找到了答案:
第一:我实现了OnPageChangeListener
所以我可以在OnPageSelected方法上创建声音
第二:我重置声音,然后创建它,最后启动它
ex(在OnPageSelected上)方法:
case 1:
if (soundplayer1.isPlaying()) {
soundplayer1.stop();
// soundplayer1.release();
} else {
soundplayer2.reset();
soundplayer2 = MediaPlayer.create(this, R.raw.soundtest);
soundplayer2.start();
}
soundplayer2.reset();
soundplayer2 = MediaPlayer.create(this, R.raw.soundtest);
soundplayer2.start();
Log.i("pageSelected", "start");
break;