Try this:

mp.prepare();
mp.seekTo(0);
mp.start();

And get rid of your onPreparedListener. It is unnecessary since you
are calling prepare().

On Apr 27, 1:20 am, Sudha <sudhaker...@gmail.com> wrote:
> Hi,
>
> I have a requirement to play several sounds many times in my game so
> instead of creating the MediaPlayer again and again I have called
> mp.seekTo(0) in onCompletion(mp) so that it will restart.
> Sometimes the sound is not audible from the device when I call mp.start
> () after setting mp.seekTo(0); but the player calls onCompletion()
> without playing any sound, this is observed randomly on most of the
> sounds
>
> FYI:
>
>   -  My sounds are of short duration mostly less than a second.
>   -  I am using a separate MediaPlayer for each sound (as I need this)
>   -  There are almost 28 sounds in my game so i will be creating 28
> MediaPlayers.
>   -  Below is the attached code for player
>
> Also If I try to play many sounds one after the other in a short
> period of time i get an error saying "no more track names available".
> can u tell Why this is happening...?
>
> check the below code:
>
> 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))
>                 {
>                         System.out.println("starting again................: 
> "+res); //
> Sudhaker
>                         mp.start();
>                         isPlayingSound = true;
>                         return;
>                 }
>                 last_req = res;
>                 mp = new MediaPlayer();
>
>                 FileInputStream fIn = Utils.getContext().openFileInput(res);
>                 if (fIn != null)
>                 {
>                         //we tell the mediaplayer which file he needs to 
> play. notice we
> don't tell him if this is a MIDI, WAV, MP3 or even AVI for that
> matter.
>                         //why? he is smart enough to recognize them!! we 
> don't even have to
> use valid extensions like say .mid, .mp3, .wav!!! ... WOAH!! =D
>                         mp.setDataSource(fIn.getFD());
>                         fIn.close();
>                 }
>
>                 mp.setOnPreparedListener(new
>                 MediaPlayer.OnPreparedListener() {
>                         public void onPrepared(MediaPlayer mp)
>                         {
>                                 mp.start();
>                                 isPlayingSound = true;
>                         }
>                 });
>
>                 mp.setOnCompletionListener(new
>                 MediaPlayer.OnCompletionListener() {
>                         public void onCompletion(MediaPlayer mp)
>                         {
>                                 System.out.println("sound playing finished : 
> "+res + " and seek to
> start"); //Sudhaker
>                                 //mp.release();
>                                 mp.seekTo(0);
>                                 isPlayingSound = false;
>                         }
>                 });
>
>                 mp.setOnErrorListener(new
>                 MediaPlayer.OnErrorListener() {
>                         public boolean onError(MediaPlayer mp, int what, int 
> extra)
>                         {
>                                 mp.release();
>                                 mp = null;
>                                 deleteSoundFile(res);
>                                 isPlayingSound = false;
>                                 last_req="";
>                                 return false;
>                         }
>                 });
>
>                 // mp.prepareAsync();
>                 if (isLooping())
>                 {
>                         mp.setLooping(true);
>                 }
>                 mp.prepare();
>
>         } catch (Exception e) {
>                 mp.release();
>                 deleteSoundFile(res);
>                 isPlayingSound = false;
>                 mp = null;
>                 new PlayerImpl(fileName,fileInputStream);
>                 last_req="";
>                 playSound(fileName);
>         }
>
> }
>
> please reply asap...
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to