android相机故障代码解决方法,Android相机服务器死机和相机错误 – 100

在测试Android应用程序时遇到了Camera错误100,尝试从StackOverflow获取解决方案未果。问题出现在启动视频录制时,代码设置包括初始化MediaRecorder、打开相机、设置源和质量,并将输出文件保存到SD卡。Logcat显示了'Camera died'的错误信息。为了解决这个问题,可能需要检查权限、相机资源管理以及MediaRecorder配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在测试我的Android应用程序时遇到Camera错误100,我在StackOverflow上找到了一些主题,但它们并没有那么有用.我正在寻找解决错误的相关解决方案.

我写的代码:

mrec = new MediaRecorder(); // Works well

mCamera = Camera.open();

mCamera.unlock();

mrec.setCamera(mCamera);

mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA);

mrec.setAudioSource(MediaRecorder.AudioSource.MIC);

mrec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));

mrec.setOutputFile("/sdcard/zzzz.3gp");

mrec.prepare();

mrec.start();

记录相机的代码:

protected void startRecordingVideo() throws IOException

{

camera = Camera.open();

camera.unlock();

SimpleDateFormat timeStampFormat = new SimpleDateFormat(

"yyyy-MM-dd-HH.mm.ss");

String fileName = "video_" + timeStampFormat.format(new Date())

+ ".3gp";

String fileURL = "/sdcard/"+fileName;

surfaceView = (SurfaceView) findViewById(R.id.surface_camera);

surfaceHolder = surfaceView.getHolder();

surfaceHolder.addCallback(this);

surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

mrec = new MediaRecorder();

mrec.setCamera(camera);

mrec.setPreviewDisplay(surfaceHolder.getSurface());

mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA);

mrec.setAudioSource(MediaRecorder.AudioSource.MIC);

mrec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_LOW));

mrec.setPreviewDisplay(surfaceHolder.getSurface());

mrec.setOutputFile("/sdcard/"+fileName);

mrec.prepare();

mrec.start();

}

protected void stopRecordingVideo() {

mrec.stop();

mrec.release();

camera.release();

}

private void releaseMediaRecorder(){

if (mrec != null) {

mrec.reset(); // clear recorder configuration

mrec.release(); // release the recorder object

mrec = null;

camera.lock();

}

}

private void releaseCamera(){

if (camera != null){

camera.release();

camera = null;

}

}

@Override

public void surfaceChanged(SurfaceHolder holder, int format, int width,

int height) {

// TODO Auto-generated method stub

}

@Override

public void surfaceCreated(SurfaceHolder holder) {

// TODO Auto-generated method stub

if (camera != null){

Parameters params = camera.getParameters();

camera.setParameters(params);

}

else {

Toast.makeText(getApplicationContext(), "Camera not available!", Toast.LENGTH_LONG).show();

finish();

}

}

@Override

public void surfaceDestroyed(SurfaceHolder holder) {

releaseMediaRecorder();

camera.stopPreview();

camera.release();

}

以下是Logcat输出:

12-27 17:52:02.788: W/IMediaDeathNotifier(21434): media server died!

12-27 17:52:02.788: W/Camera(21434): Camera server died!

12-27 17:52:02.788: W/Camera(21434): ICamera died

12-27 17:52:03.048: E/Camera(21434): Error 100

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值