I can't commit to a date, but I can tell you that it will be addressed
in the next SDK release.
On Nov 10, 1:27 pm, Robert Green <[EMAIL PROTECTED]> wrote:
> 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 [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
-~----------~----~----~----~------~----~------~--~---