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 に答える