This worked great. Thank you very much. The lack of documentation on SoundPool is disturbting.
On Nov 9, 2:10 pm, Robert Green <[EMAIL PROTECTED]> wrote: > Yeah there's something you need to know about SoundPool: Init well > before playing - that is, you need to know way ahead of time what > sounds you will be using because it doesn't work well to play > immediately after initializing. I think they attempt to initialize > asynchronously or something because I had problems when I tried to > load and play back to back like you're trying there. > > When I use SoundPool, I load everything upon creation of the instance > of the game then trigger the plays whenever I need them. Here's my > current code for SoundPoolSoundManager: > > public class SoundPoolSoundManager implements SoundManager { > private static final String TAG = "SoundPoolSoundManager"; > > public static final int SOUND_1 = 1; > > private boolean enabled = true; > private Context context; > private SoundPool soundPool; > private HashMap<Integer, Integer> soundPoolMap; > > public SoundPoolSoundManager(Context context) { > this.context = context; > } > > public void reInit() { > init(); > } > > public void init() { > if (enabled) { > Log.d(TAG, "Initializing new SoundPool"); > //re-init sound pool to work around bugs > release(); > soundPool = new SoundPool(SOUNDPOOL_STREAMS, > AudioManager.STREAM_MUSIC, 100); > soundPoolMap = new HashMap<Integer, Integer>(); > soundPoolMap.put(SOUND_1, soundPool.load(context, > R.raw.sound1, > 1)); > Log.d(TAG, "SoundPool initialized"); > } > } > > public void release() { > if (soundPool != null) { > Log.d(TAG, "Closing SoundPool"); > soundPool.release(); > soundPool = null; > Log.d(TAG, "SoundPool closed"); > return; > } > } > > public void playSound(int sound) { > if (soundPool != null) { > Log.d(TAG, "Playing Sound " + sound); > AudioManager mgr = (AudioManager) > context.getSystemService(Context.AUDIO_SERVICE); > int streamVolume = > mgr.getStreamVolume(AudioManager.STREAM_MUSIC); > Integer soundId = soundPoolMap.get(sound); > if (soundId != null) { > soundPool.play(soundPoolMap.get(sound), > streamVolume, > streamVolume, 1, 0, 1f); > } > } > } > > public void setEnabled(boolean enabled) { > this.enabled = enabled; > } > > } > > On Nov 9, 4:28 am, g1bb <[EMAIL PROTECTED]> wrote: > > > Hello, > > > I posted this on the AndDev forums as well, and I'm somewhat of a > > novice to Java. > > > I've tried the following code after seeing the snippet > > athttp://www.anddev.org/using_soundpool_instead_of_mediaplayer-t3115.html, > > and I can't seem to get this to work. Here's what I have: > > > public class OneShotAlarm extends BroadcastReceiver > > { > > private SoundPool soundPool; > > private HashMap<Integer, Integer> soundPoolMap; > > > @Override > > public void onReceive(Context context, Intent intent) > > { > > soundPool = new SoundPool(4, AudioManager.STREAM_MUSIC, 100); > > soundPoolMap = new HashMap<Integer, Integer>(); > > soundPoolMap.put(1, soundPool.load(context, R.raw.sound1, > > 1)); > > > AudioManager mgr = (AudioManager) > > context.getSystemService(Context.AUDIO_SERVICE); > > int streamVolume = > > mgr.getStreamVolume(AudioManager.STREAM_MUSIC); > > soundPool.play(soundPoolMap.get(1), streamVolume, > > streamVolume, 1, 0, 1f); > > } > > > } > > > You'll notice I replaced instaces of 'getContext()' with 'Context', as > > 'getContext()' doesn't seem to be available from where I have this > > code. > > > Here is my LogCat that's being returned, and no sound is being played: > > 11-08 19:25:23.679: DEBUG/dalvikvm(1822): Trying to load lib /system/ > > lib/libsoundpool.so 0x0 > > 11-08 19:25:23.759: DEBUG/dalvikvm(1822): Added shared lib /system/lib/ > > libsoundpool.so 0x0 > > 11-08 19:25:23.819: WARN/SoundPool(1822): sample 1 not READY > > > Any ideas on this? I've been pulling my hair out all day messing with > > MediaPlayer, then I came across SoundPool and it looked like it would > > be a great alternative. > > > Thanks in advance. > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---