Unfortunately it is the only suitable API for sounds in games at the
moment.  I tried to use MediaPlayers for mine and the performance and
player management was sub-par.  I had problems with it but after I
switched to OGGs they seemed to go away.  I'm prepared to retrofit my
games once the API is finalized but until then it's really the only
way to handle multiple triggered sounds well.

Dave - got an ETA on when that will be ready?  :)

On Nov 10, 1:52 pm, Dave <[EMAIL PROTECTED]> wrote:
> SoundPool is undocumented because it is not ready as a public API and
> is subject to change. There are serious problems with it including the
> likelihood that your application will deadlock if you attempt to use
> it. When it is ready, we will publish the API documentation.
>
> On Nov 9, 5:04 pm, g1bb <[EMAIL PROTECTED]> wrote:
>
> > 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
-~----------~----~----~----~------~----~------~--~---

Reply via email to