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 [email protected]
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
-~----------~----~----~----~------~----~------~--~---