I'm developing an Android Application that tells story for kids, I'm using a PagerAdapter so once the user navigate between the pages an audio will be played with a duration of around 30 seconds for each page So, I thought of using SoundPool but I faced two problems:
1- once was that the sound didn't download when the user select a specific page so no sound will be played, but I manage this issue by considering adding the sounds with size less than 1 Mega (P.S from the beginning I used .ogg files on Raw folder)
2- The Sound That I've Added played properly when the page is selected but it didn't complete to the end
After that I used MediaPlayer but the problem here is that it crashes when the user select another page
@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;
}
}
Thank You in Advance,
I found the Answer:
first: I implemented OnPageChangeListener
so I can create the sound on OnPageSelected method
second: I reset the sound then create it and finally start it
ex (on the OnPageSelected) method:
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;