Question

In activity contains three buttons Button-1,Button-2,Button-3.

When i click on Button-1: It will records the audio and click on Button-2 it stop the recording and when click on Button-3 it will play audio it's working fine.

But i want to play that audio through music player.How to play the audio in music player.

For recording and playing audio i am creating this::

AudioRecord.Java

  public class AudioRecord {

private static MediaRecorder mediaRecorder = new MediaRecorder();
public MediaPlayer mediaPlayer = new MediaPlayer();;

private static String audioFilePath  = Environment.getExternalStorageDirectory()
        .getAbsolutePath() + "/myaudio.3gp";
//Button recordButton, stopButton, playButton;

boolean isRecording = false;



public void recordAudio(final Button record,final Button stop,final Button play) throws IOException{

    record.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            try {
                isRecording = true;
                stop.setEnabled(true);
                play.setEnabled(false);
                record.setEnabled(false);

                try {
                    mediaRecorder = new MediaRecorder();
                    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
                    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
                    mediaRecorder.setOutputFile(audioFilePath);
                    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
                    mediaRecorder.prepare();
                } catch (Exception e) {
                    e.printStackTrace();
                }

                mediaRecorder.start();
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    });
    stop.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            stop.setEnabled(false);
            play.setEnabled(true);

            if (isRecording) {
                record.setEnabled(false);
                mediaRecorder.stop();
                mediaRecorder.release();
                mediaRecorder = null;
                isRecording = false;
            } else {
                mediaPlayer.release();
                mediaPlayer = null;
                record.setEnabled(true);
            }
        }
    });

    play.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            try {
                play.setEnabled(false);
                record.setEnabled(false);
                stop.setEnabled(true);

                mediaPlayer = new MediaPlayer();
                int i = mediaPlayer.getDuration();
                System.out.println("Audio size"+" "+i);
                mediaPlayer.setDataSource(audioFilePath);
                mediaPlayer.prepare();
                mediaPlayer.start();

                mediaPlayer.setOnCompletionListener(new OnCompletionListener() {

                    @Override
                    public void onCompletion(MediaPlayer mp) {
                        // TODO Auto-generated method stub
                        System.out.println("Audio cpmpleted ..............");
                        stop.setEnabled(false);
                        play.setEnabled(true);
                        record.setEnabled(true);
                        mediaPlayer.release();
                        mediaPlayer = null;
                        //Toast.makeText(AudioRecord.this, "Audio Complete", Toast.LENGTH_SHORT).show();
                    }
                });
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    });


}  
 }

I am using recordAudio() in side of my activity class.It's working fine.But i want to play audio in musicplayer when click on play button.And i want to return into Activity class when completing audio.

Any one plese help me.

Was it helpful?

Solution

Understood your problem now. I'm assuming your media player implementation is working fine, and you just to call back your original activity after music has finished.

You can use the Completion Listener of Media Player class to do this.

        mediaPlayer.setOnCompletionListener(new OnCompletionListener() {

            public void onCompletion(MediaPlayer mp) {

                Log.i("Completion Listener","Song Complete");

                /* Put your code to call back your activity here */
            }
        });

You can call back your original activity by variety of methods like startActivity(intent). Basically, on completion of audio track, your listener will be called, then you can decide what to do. You can just print a message or you can call any activity you wish.

Here's the complete DEMO

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top