1

我正在开发一个为孩子们讲述故事的 Android 应用程序,我使用的是 PagerAdapter,所以一旦用户在页面之间导航,就会播放音频,每个页面的持续时间约为 30 秒所以,我想使用 SoundPool 但是我遇到了两个问题:

1-曾经是当用户选择特定页面时声音没有下载,因此不会播放声音,但我通过考虑添加大小小于 1 Mega 的声音来解决这个问题(PS 从一开始我就使用 .ogg Raw 文件夹中的文件)

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;
                }                       
        }

先感谢您,

4

1 回答 1

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;
于 2013-10-17T06:57:20.913 回答