【问题标题】:How to play recording audio file in musicplayer in android?如何在 android 的音乐播放器中播放录音文件?
【发布时间】:2013-12-27 18:13:02
【问题描述】:

在activity中包含三个按钮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()。它工作正常。但是我想在点击播放按钮时在音乐播放器中播放音频。我想在完成音频时返回到活动类。

请任何人帮助我。

【问题讨论】:

  • 为什么要制作自己的媒体播放器?为什么不直接从设备打开现有的、已安装的音乐应用程序?当用户从那里按回来时,他会回到您的应用程序。
  • 是的,Sanjeev 你是对的。但是,我想在没有用户参与的情况下完成音乐后返回应用程序。

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


【解决方案1】:

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

您可以使用媒体播放器类的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

【讨论】:

  • 上面的答案像 chamm 一样对我有用。但是在这里我想在完成音乐时回到我的应用程序。
  • 当音乐结束时,它应该自动回到你的应用程序吗?
  • 不,它不会回到我的应用程序中。它会显示我,直到我点击后退按钮。
  • @user2931067 了解您的问题。答案已更新。使用MediaPlayer.OnCompletionListener
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多