Cody Coogan
Cody Coogan

Reputation: 87

I get error (1, 19) when tapping on multiple buttons that play sound

It works for a few buttons, but when I tap about 6 then only some of them work. The ones that don't work give the error (1, -19). I do the media player state wrapper set up, so if I need to use that to get states of my "mp"s, let me know.

public class SoundFile {

    public SoundFile(final Activity activity, final String soundfile, int imgButtonId, ArrayList<MediaPlayerStateWrapper> mps) {

        this.mp = new MediaPlayerStateWrapper();
        try {
          this.afd = activity.getAssets().openFd(soundfile + ".mp3");
        } catch (IOException e) {
            e.printStackTrace();
        }

        this.allMps = mps;
        mps.add(this.mp);
        this.position = (ImageButton) activity.findViewById(imgButtonId);

        this.position.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try {
                    mp.reset();
                    mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
                    mp.prepareAsync();
                    mp.start();
                }catch (Exception ex){
                    ex.printStackTrace();
                }
....

Upvotes: 3

Views: 127

Answers (1)

Cody Coogan
Cody Coogan

Reputation: 87

You have to add an onPreparedListener. Here is what I did and it worked.

 try {

                mp = new MediaPlayer();

                mp.reset();
                try {
                    mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
                } catch (IOException e) {
                    e.printStackTrace();
                }
                mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
                    @Override
                    public void onCompletion(MediaPlayer mediaPlayer) {
                        mp.release();

                    }
                });


                mp.setOnPreparedListener(new OnPreparedListener() {
                    @Override
                    public void onPrepared(MediaPlayer mpm) {
                        mpm.start();

                        mp.start();


                    }
                });
                mp.prepareAsync();


            } catch (Exception ex) {
                ex.printStackTrace();
            }


        }
    });
}

}

Upvotes: 1

Related Questions