--- name: SoundManager Pattern description: SoundPool implementation for low-latency audio on legacy Android type: reference --- ## SoundPool Implementation for Galaxy S3 **Why:** MediaPlayer has too much latency for UI sounds. SoundPool is designed for low-latency playback. **How to apply:** ```java public class SoundManager { private static final int MAX_STREAMS = 8; private SoundPool soundPool; private Map soundMap; private void initializeSoundPool(Context context) { soundMap = new HashMap<>(); if (Build.VERSION.SDK_INT >= 21) { soundPool = new SoundPool.Builder() .setMaxStreams(MAX_STREAMS) .build(); } else { // Legacy constructor for API 18-20 soundPool = new SoundPool(MAX_STREAMS, AudioManager.STREAM_MUSIC, 0); } } public void playButtonClick() { if (loaded && soundPool != null) { Integer soundId = soundMap.get(SOUND_BUTTON); if (soundId != null) { soundPool.play(soundId, 0.7f, 0.7f, 1, 0, 1.0f); } } } } ``` ### Key points: - Use application context to avoid leaks - Implement as singleton - Release resources in onDestroy - Support both legacy and modern SoundPool APIs - Use short OGG files (under 50KB)