如何在Android中的音乐播放器中播放录音文件?

时间:2013-12-27 09:29:28

标签: android audio-recording android-music-player

在活动中包含三个按钮Button-1,Button-2,Button-3。

当我点击Button-1时:它会录制音频并点击Button-2它会停止录制,当点击Button-3时它会播放音频,它工作正常。

但我想通过音乐播放器播放音频。如何在音乐播放器中播放音频。

为了录制和播放音频,我创建了这个::

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();
            }
        }
    });


}  
 }

我在我的活动课的一侧使用了recordAudio()。它工作正常。但是我想在点击播放按钮时在音乐播放器中播放音频。我想在完成音频时返回到Activity类。

任何一个请求帮助我。

1 个答案:

答案 0 :(得分:0)

现在理解你的问题。我假设您的媒体播放器实现工作正常,您只需在音乐播放完毕后回拨原始活动。

您可以使用Media Player类的Completion Listener来执行此操作。

        mediaPlayer.setOnCompletionListener(new OnCompletionListener() {

            public void onCompletion(MediaPlayer mp) {

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

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

您可以通过startActivity(intent)等多种方法回复原始活动。基本上,在完成音轨后,您的听众将被调用,然后您可以决定要做什么。您只需打印一条消息,或者可以拨打任何您想要的活动。

这是完整的DEMO