1

当使用 soundPool 我的第一个声音循环时,其余的抛出状态 12 这里是代码

public SoundPool soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 100);
public HashMap<Integer, Integer> soundsMap;

public int playSound(int sound, int loop) {
   if (curs != sound)
   {
   curs = sound;   
       AudioManager mgr = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
       float streamVolumeCurrent = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);
       float streamVolumeMax = mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
       float volume = streamVolumeCurrent / streamVolumeMax;  
       return soundPool.play(soundsMap.get(sound), volume, volume, 1, loop, 1);

     }else
   {
       return 0;
   }
 }

只有当我将循环设置为 -1 时才会发生这种情况,它们是非常小的文件。

4

1 回答 1

0

尝试使用带有 .ogg 格式的小文件(推荐),我还添加了 1 秒的睡眠时间以使其缓冲。如果没有缓冲并尝试播放,则基本上会出现内存不足

new Thread() {
            public void run() {

                try {
                    sleep(900);
                    mSoundManager.playSound(1);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            };
        }.start();
于 2013-01-25T06:40:07.880 回答