首页 > 关于android的activity中camera预览问题,涉及activity生命周期

关于android的activity中camera预览问题,涉及activity生命周期

请教一个问题

我一个activity
打开了摄像头,并启动了预览,在onpause中调用了release摄像头后,再回到activity,在onresume中调用了重新打开摄像头及预览,预览就失效了,但其他代码还正常,跟踪代码,执行了surfaceCreated和surfaceChanged,里面有mCamera.startPreview();


activity pause过后恢复我们以前是这样做的,Camera对象需要重新生成

在onPause的时候,调用如下方法(已经删除其他跟我们项目相关的逻辑代码)

/**
 * 停止显示相机画面</br>
 * 若设置了录制器,会自动关闭录制器
 */
public void stopPreview() {
    synchronized (mCameraLock) {
        if (mCamera != null) {
            mCamera.setPreviewCallback(null);
            mCamera.stopPreview();
            mCamera.release();
            mCamera = null;
        }         
    }
}

然后在onResume时,重新获得Camera对象(通过Camera.open()),
再重新设置previewCallback,SurfaceHolder,Parameters等,最后startPreview

这里可以提醒一下LZ,
打开摄像头的时间可能会很长,勿在主线程直接打开,否则会有概率出ANR
摄像头根据设备的不同可能在打开时经常会抛各种异常,记得try,catch

【热门文章】
【热门文章】