Thanks for the advice.  I had already modeled the state transitions
using the listeners, however I suspect there is (was) a problem with
the rules I had implemented in this regard.

Because the call to prepareAsync returns immediately, I think a
subsequent call to prepareAsync was coming in and failing due to a
missed state check in the code.

I also realized that I don't actually need to call prepareAsync in
most cases anyway.  Because I am really just wanting to "reset" the
audio track to be played again, I can just call seekTo(0) which is
much faster.

In the end.. as usual.. it was my crufty code that was the problem!

Thanks again,

Jason.

--
Droid Odyssey!  A new game for Android
http://www.carboncrystal.com/droid-odyssey/

On Nov 27, 6:59 am, joebowbeer <[email protected]> wrote:
> Do you have an error listener registered? Does it give you more
> information?
>
> According to the state diagram, stop() is not available in all states.
> Perhaps you're calling stop() in an invalid state, causing the player
> to transition to the Error state, at which point prepareAsync would
> fail:
>
> http://developer.android.com/reference/android/media/MediaPlayer.html
>
> In my experience with media player, it's best not to assume that a
> state transition has happened until one of the listeners tells you.
>
> Also, if you have the luxury of creating a new MediaPlayer instead of
> trying to stop and reuse the current player, I think you'll receive
> fewer error reports.
>
> On Nov 23, 1:16 am, Jason Polites <[email protected]> wrote:
>
>
>
>
>
>
>
> > Hi folks,
>
> > Some time ago I posted an issue relating to an IllegalStateException
> > in the Media Player (http://groups.google.com/group/android-developers/
> > browse_thread/thread/46c7c2cd4f4a6958/5551d47aac93632c)
>
> > I have just launched the app into the "wild" and this error is
> > flooding in.
>
> > I just can't seem to fathom why.. here's the code:
>
> > if(mp != null) {
> >        mp.stop();
> >        mp.prepareAsync();
>
> > }
>
> > (mp is a MediaPlayer instance BTW).
>
> > According to the doco, prepareAsync is valid for {Initialized,
> > Stopped} states.. but I just can't see how it could be in any state
> > other than stopped??
>
> > The trace is:
>
> > java.lang.IllegalStateException
> >       at android.media.MediaPlayer.prepareAsync(Native Method)
> >       .. the line of code mentioned above follows.
>
> > Is it possible that stop() is not synchronous?  Can't seem to see
> > anything in the doco stating this.
>
> > Anyone got any ideas?
>
> > P.S.
>
> > I'm seeing this on a wide range of devices, but all so far are version
> > 2.1-update1
>
> > --
> > Droid Odyssey!  A new game for 
> > Androidhttp://www.carboncrystal.com/droid-odyssey/

-- 
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

Reply via email to