Creating an Android sound pool and playing sounds by sound id
Following program shows you how to create your own sound pool and play sounds by passing id.
package com.test;
import android.content.Context;
import android.media.AudioAttributes;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Build;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Random;
public class SoundUtils {
static SoundPool soundPool;
static HashMap<Integer, Integer> soundPoolMap;
static boolean muted = false;
public static void loadSounds(Context context){
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
AudioAttributes audioAttrib = new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_GAME)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build();
soundPool = new SoundPool.Builder().setAudioAttributes(audioAttrib).setMaxStreams(6).build();
}
else {
soundPool = new SoundPool(6, AudioManager.STREAM_MUSIC, 0);
}
soundPoolMap = new HashMap<Integer, Integer>();
soundPoolMap.put(1, soundPool.load(context, R.raw.sound_input, 1));
soundPoolMap.put(2, soundPool.load(context, R.raw.sound_erase, 1));
soundPoolMap.put(3, soundPool.load(context, R.raw.sound_correct, 1));
soundPoolMap.put(4, soundPool.load(context, R.raw.sound_wrong, 1));
}catch (Exception e){
// Ignore
}
}
public static void playSound(int i){
try {
if(!muted && soundPoolMap.containsKey(i)){
soundPool.play(soundPoolMap.get(i), 1, 1, 1, 0, 1f);
}
}catch (Exception e){
// Ignore
}
}
}