简体   繁体   English

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

[英]How to play recording audio file in musicplayer in android?

In activity contains three buttons Button-1,Button-2,Button-3. 活动中包含三个按钮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. 当我单击Button-1时:它将记录音频,然后单击Button-2则停止记录,而当单击Button-3时它将播放音频,并且工作正常。

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. 我在活动类的侧面使用recordAudio()。它工作正常。但是我想在音乐播放器上单击播放按钮时播放音频,并且我想在完成音频后返回Activity类。

Any one plese help me. 任何人请帮助我。

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. 您可以使用Media Player的完成侦听器类来执行此操作。

        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) . 您可以通过各种方法(例如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 这是完整的演示

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM