【问题标题】:error record and play audio in android在android中记录错误并播放音频
【发布时间】:2011-11-07 14:29:32
【问题描述】:

我一直在尝试在 android 中录制和播放录制的音频。我已经使用了 MediaRecorder 和 MediaPlayer 类。

我的代码包含 3 个部分: 开始录音() 停止录制() 播放音频

但是我的代码片段中有一个错误,每当我执行它时,startrecording() 函数都会实现 catch 块。

 package hare.krishna;

import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.*;


public class Recordplay2Activity extends Activity 
{    
    Button play1,record1,stop1;
    TextView status1;
    MediaRecorder m1=null;
    MediaPlayer m2=null;
    String path;

    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        play1=(Button)findViewById(R.id.play);
        record1=(Button)findViewById(R.id.record);
        stop1=(Button)findViewById(R.id.stop);
        status1=(TextView)findViewById(R.id.status);

        OnClickListener recordListener = new OnClickListener()
        {
            public void onClick(View v)
            {
                startrecording();
            }
        };

        OnClickListener stopListener = new OnClickListener()
        {
            public void onClick(View v)
            {
                stoprecording();
            }
        };

        OnClickListener playListener = new OnClickListener()
        {
            public void onClick(View v)
            {
                playaudio();
            }
        };

        record1.setOnClickListener(recordListener);
        stop1.setOnClickListener(stopListener); 
        play1.setOnClickListener(playListener);    

    }


    public void startrecording() 
    {       
        status1.setText("GET READY FOR RECORDING");
        try
        {       
        m1=new MediaRecorder();
        m1.setAudioSource(MediaRecorder.AudioSource.MIC);
        m1.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
        m1.setOutputFile(path);
        m1.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

        m1.prepare();
        m1.start();
        }
        catch(Exception e)
        {
            status1.setText("ERROR IN startrecording FUNCTION ");
        }
    }

    public void stoprecording()
    {
        try
        {
        status1.setText("TIME TO STOP MEDIA");
        m1.stop();
        m1.reset();
        m1.release();
        }
        catch(Exception e)
        {
            status1.setText("ERROR IN stoprecording FUNCTION");
        }
    }

    public void playaudio()
    {
        status1.setText("PLAYING RECORDER AUDIO");
        try
        {
            m2=new MediaPlayer();
            m2.setDataSource("/sdcard/output.3gp");
            m2.prepare();
            m2.start();

        }
        catch(Exception e)
        {
            System.out.println("ERROR in playaudio FUNCTION");

        }
    }



}

【问题讨论】:

  • 欢迎来到 Stackoverflow!如果您发现回复有帮助,请投票。如果回复成功回答了您的问题,请点击旁边的绿色复选标记接受答案。也请查看stackoverflow.com/questions/how-to-ask 以获取有关如何写出好问题的建议
  • 您遇到什么错误?日志猫说什么?请在您的问题中发布完整的堆栈跟踪。

标签: android audio


【解决方案1】:

我解决了。我把AudioEncoder从:

m1.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB)

到:

m1.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多