我正在为平板电脑创建一个录音笔应用程序。我尝试使用以下代码录制声音。但是当我点击停止按钮时它会崩溃帮助我......
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:ERROR / AndroidRuntime(677):java.lang.IllegalStateException
答案 0 :(得分:1)
如果在start()
之前调用它,则为IllegalStateException
现在我假设你在开始之前没有打电话给它。我想知道你的onCreate()是否正常发生。如果出于某种原因第二次调用onCreate()(例如屏幕旋转),则会创建一个新的MediaRecorder,并且您将在没有调用start的记录器上调用stop()。
另外,你确定start()工作正常吗? IllegalStateException可能来自start()。你能给我们一个完整的堆栈跟踪来说明IllegalStateException的来源吗?
继续你所给予的例外。这可能是因为听力计目录不存在。如果你用File.mkdir()创建它,它应该工作。或者,尝试使用顶级文件名运行,如以下示例中所示: http://developer.android.com/guide/topics/media/index.html
recorder.setOutputFile("/audiorecordtest.3gp");
答案 1 :(得分:0)
请通过以下链接。这是我在developer.android.com中找到的示例代码,可能会对您有所帮助http://developer.android.com/guide/topics/media/index.html