View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.startBtn:
if (!isRecord) {
if (mediaRecorder == null) {
mediaRecorder = new MediaRecorder();
}
if (camera == null) {
camera = Camera.open(Camera.CameraInfo.CAMERA_FACING_BACK);
camera.unlock();
}
mediaRecorder.setCamera(camera);
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);
CamcorderProfile camcorderProfile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
mediaRecorder.setVideoSize(480, 320);
mediaRecorder.setVideoFrameRate(camcorderProfile.videoFrameRate);//设置要捕获的视频帧速率
mediaRecorder.setPreviewDisplay(surfaceHolder.getSurface());
String path = getSDPath();
if (path != null) {
File dir = new File(path + "/recordtest");
if (!dir.exists()) { //返回一个布尔值,指示是否可以在下面的文件系统中找到这个文件。
dir.mkdir();
}
path = dir + "/" + getDate() + ".mp4";
mediaRecorder.setOutputFile(path);
try {
mediaRecorder.prepare();//准备录音机开始捕获和编码数据。
} catch (IOException e) {
e.printStackTrace();
}
}
mediaRecorder.start();
isRecord = true;
startCameraBtn.setText("stop");
} else {
mediaRecorder.stop();
mediaRecorder.reset();
startCameraBtn.setText("start");
isRecord = false;
}
break;
}
};
求大神 第一次点击start按钮能正常start,然后再点击stop按钮(和start按钮同一个)能够正常stop,但是第二次点击start就会报如上的错(错误行已用红色),求大神啊