By the way what are these states 1, 2, 128 etc. Can't android people name it when raising exceptions so that developers could know better what is the cause of exception....?
I am getting full irritated because of these sound issues particularly with the MediaPlayer and its states in android.... On May 8, 10:33 am, Sudha <sudhaker...@gmail.com> wrote: > I have nearly 28 sound files in which most of them have the duration > less than a second (i.e in milliseconds), to reduce the delay in > creating the player everytime, i created a player for each sound file > i.e 28 MediaPlayers and each sound file plays on its own player and > all the sounds are managed by a separate single thread (FYI only that > sound thread can call these methods no other thread can start the > sounds explicitly), so I can confirm that all the methos calling is > done by a single thread. > > and regarding the other code, i have posted all what am using and the > only other thing which is not here is the constructor which converts > the given input stream to a file as the MediaPlayer cannot play sounds > directly with a stream. > > (I am packing all the sounds in a single pack and open it at runtime > and give the input stream to Player as it is done in J2ME, so again am > converting the given input stream to a file.) > Here is the below code of Constructor. > > protected PlayerImpl(String fileName1, InputStream inputstream) > { > fileName = fileName1; > fileInputStream = inputstream; > > //Creates a FileOutput pointer to dump the InputStream., with > permissions: 662 (rw- rw- -w-) > FileOutputStream fOut = null; > try{ > fOut = Utils.getContext().openFileOutput > (fileName,Context.MODE_WORLD_WRITEABLE); > } > catch(Exception filenotfound){ > if (Utils.debugEnabled) > android.util.Log.d("Player ERROR","FileOutputStream > FAILED!"); > } > //we dump the 'stream here... > int n; > try { > while ((n=inputstream.read(FOS_BUFFER))>=0) > { > fOut.write(FOS_BUFFER, 0, n); > } > //we close fOut but DO NOT CLOSE fIn !! > fOut.close(); > } catch (IOException e1) { > if (Utils.debugEnabled) > android.util.Log.d("Player ERROR","temp file creation > FAILED"); > } > > } > > I dont think this Constructor has anything to do with the errors I > get, to point-out mostly i found these errors are raised when the > device is kept idle for sometime while sounds are playing, the device > backlight goes off and device enters the idle state.... > at this point all these exceptions are raised and with less > reproducibility my game crashes. > > does the phone stop the sounds while it goes to standby mode? > I have my own code to stop the sounds when an interrupt occurs, so > does this conflict with the device method calls? > > On May 7, 7:59 pm, Marco Nelissen <marc...@android.com> wrote: > > > Based on the code you posted, the "stop called in state 2" is because you > > call stop() in your OnCompletionListener, which isn't necessary (it's > > already stopped at that point). > > I don't see how the other problems could happen with the code you posted, > > unless you have multiple threads accidentally using the same MediaPlayer, or > > there is some other code involved that you didn't post. > > > On Thu, May 7, 2009 at 1:36 AM, Sudha <sudhaker...@gmail.com> wrote: > > > > Hi I am using MediaPlayer to play my sounds below is my another post > > > >http://groups.google.com/group/android-developers/browse_thread/threa... > > > > I tried all the possible ways stated in the above post but could not > > > play sounds accordingly so changed the sound code as below, > > > > Now the sounds are working fine and no sound is getting skipped but am > > > getting some errors which i cannot figure why they are coming...? > > > > Below are some errors: > > > > 1- E/MediaPlayer( 2173): stop called in state 1 > > > > 2- E/MediaPlayer( 2173): stop called in state 2 > > > > the above errors i get frequently and i get the below one's randomly, > > > the game freezes and requires a force close when i encounter the below > > > errors > > > > 3- E/MediaPlayer( 2173): setDataSource called in state 2 > > > W/System.err( 2173): java.lang.IllegalStateException > > > W/System.err( 2173): at > > > android.media.MediaPlayer.setDataSource(Native Method) > > > > 4- E/MediaPlayer( 2173): setDataSource called in state 128 > > > W/System.err( 2173): java.lang.IllegalStateException > > > W/System.err( 2173): at > > > android.media.MediaPlayer.setDataSource(Native Method) > > > W/System.err( 2173): at > > > android.media.MediaPlayer.setDataSource(MediaPlayer.java:247) > > > > 5- E/MediaPlayer( 2173): prepareAsync called in state 128 > > > E/MediaPlayer( 2173): setDataSource called in state 128 > > > W/System.err( 2173): java.lang.IllegalStateException > > > W/System.err( 2173): at > > > android.media.MediaPlayer.setDataSource(Native Method) > > > > 6- E/MediaPlayerService( 31): offset error > > > E/MediaPlayer( 2173): Unable to to create media player > > > > I have observed that all the sounds played atleast once in the game > > > without any error. > > > > I want to know what are the states 1,2 & 128 and why are the errors > > > raised. > > > > As per the > > >http://developer.android.com/reference/android/media/MediaPlayer.html... > > > I suppose there is no problem in my code but y is that error shown...? > > > > Plz check the below code: > > > > public void stop() throws MediaException { > > > try > > > { > > > mp.stop(); > > > mp.reset(); > > > FileInputStream fIn = > > > Utils.getContext().openFileInput(fileName); > > > if (fIn != null) > > > { > > > mp.setDataSource(fIn.getFD()); > > > fIn.close(); > > > } > > > } > > > catch(Exception e){e.printStackTrace();} > > > isPlayingSound = false; > > > } > > > > public boolean isPlayingSound; //class member > > > MediaPlayer mp = null; > > > String last_req = ""; > > > public void playSound(final String res) { > > > if (isPlayingSound){ > > > return; > > > } > > > try { > > > if (!last_req.equals(res)) > > > { > > > last_req = res; > > > mp = new MediaPlayer(); > > > > FileInputStream fIn = > > > Utils.getContext().openFileInput(res); > > > if (fIn != null) > > > { > > > mp.setDataSource(fIn.getFD()); > > > fIn.close(); > > > } > > > > mp.setOnCompletionListener(new > > > MediaPlayer.OnCompletionListener() { > > > public void onCompletion(MediaPlayer mp) > > > { > > > try > > > { > > > mp.stop(); > > > mp.reset(); > > > FileInputStream fIn = > > > Utils.getContext().openFileInput(res); > > > if (fIn != null) > > > { > > > > mp.setDataSource(fIn.getFD()); > > > fIn.close(); > > > } > > > isPlayingSound = false; > > > } > > > catch(Exception > > > e){e.printStackTrace();} > > > > } > > > }); > > > > mp.setOnErrorListener(new > > > MediaPlayer.OnErrorListener() { > > > public boolean onError(MediaPlayer mp, int > > > what, int extra) > > > { > > > mp.release(); > > > mp = null; > > > deleteSoundFile(res); > > > isPlayingSound = false; > > > last_req=""; > > > System.gc(); > > > new > > > PlayerImpl(fileName,fileInputStream); > > > return false; > > > } > > > }); > > > } > > > > // mp.prepareAsync(); > > > if (isLooping()) > > > { > > > mp.setLooping(true); > > > } > > > mp.prepare(); > > > mp.start(); > > > isPlayingSound = true; > > > > } > > > catch (Exception e) { > > > mp.release(); > > > deleteSoundFile(res); > > > isPlayingSound = false; > > > mp = null; > > > System.gc(); > > > new PlayerImpl(fileName,fileInputStream); > > > last_req=""; > > > > > ... > > read more » --~--~---------~--~----~------------~-------~--~----~ 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 android-developers-unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---