【问题标题】:sound recording problem in androidandroid中的录音问题
【发布时间】:2011-05-12 19:16:21
【问题描述】:

我正在为平板电脑创建一个录音机应用程序。我尝试了下面的代码来录制声音。但是当我点击停止按钮时它崩溃了请帮助我...

public class soundrecord extends Activity {
    private Button start;
    private Button stop;
    private TextView txt;
     MediaRecorder recorder;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        start=(Button)findViewById(R.id.start);
        stop=(Button)findViewById(R.id.stop);
        txt=(TextView)findViewById(R.id.txtstatus);
        recorder = new MediaRecorder();  
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);  
        recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB);  
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);  
        recorder.setOutputFile("/myfile/temp");  



        start.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                 try {
                     txt.setText("recording");
                     recorder.prepare();
                     recorder.start(); 
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }


            }
        })  ;       


        stop.setOnClickListener(new OnClickListener() {

            public void onClick(View v) {
                txt.setText("stop recording");
                recorder.stop();
                /*recorder.reset();    
                recorder.release();*/

            }
        })  ;


    }
}

这是 logcat 中显示的异常

05-12 15:49:01.013: 错误/AndroidRuntime(677): java.lang.IllegalStateException

【问题讨论】:

  • 问题出在 start 方法上。它显示异常 05-12 16:33:34.884: WARN/System.err(778): java.io.FileNotFoundException: /audiometer/temp (No这样的文件或目录)-

标签: android voice-recording


【解决方案1】:

documentation for stop 说:

IllegalStateException 如果在 start() 之前被调用

现在我假设您没有在开始之前调用它。我想知道您的 onCreate() 是否正常发生。如果由于某种原因 onCreate() 被第二次调用(例如屏幕旋转),那么将创建一个新的 MediaRecorder,并且您将在尚未调用 start 的记录器上调用 stop()。

另外,你确定 start() 工作正常吗? IllegalStateException 可能来自 start()。你能给我们完整的堆栈跟踪来说明 IllegalStateException 的来源吗?


除您给出的例外情况外继续进行。这可能是因为听力计目录不存在。如果您使用 File.mkdir() 创建它,它应该可以工作。或者,尝试使用顶级文件名运行,如示例中所示: http://developer.android.com/guide/topics/media/index.html

recorder.setOutputFile("/audiorecordtest.3gp");

【讨论】:

  • 你绝对正确。问题出在启动方法上。它显示异常 05-12 16:33:34.884: WARN/System.err(778): java.io.FileNotFoundException: /audiometer /temp(没有这样的文件或目录)
  • 我试过这个。但现在它显示 sdcard 未安装。我在设备中尝试过。但崩溃
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-08
  • 1970-01-01
  • 2017-11-13
相关资源
最近更新 更多