سؤال

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;
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top