Android:start()和release()声音onPageSelected返回崩溃

时间:2013-10-14 18:11:34

标签: soundpool android-pageradapter

我正在开发一个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;
                }                       
        }

先谢谢你,

1 个答案:

答案 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;