相机打开时如何释放相机?

时间:2015-04-29 04:29:40

标签: java android camera

我的应用程序控制着相机,最近有无法打开相机的设备发生了大量崩溃报告。按后退按钮可释放相机,但也会禁用后台模式。按主页按钮不会释放相机,打开相机时会导致崩溃,但启用后台模式。

如何在打开相机应用程序时释放相机?

2 个答案:

答案 0 :(得分:1)

当您在Android应用程序中使用Android硬件相机时,您应该释放它,以便其他应用程序或您的应用程序可以使用它。 在移动到应用程序中的其他活动之前,最好先释放相机。

使用以下代码 -

protected void onDestroy(){

  if(camera!=null){
        camera.stopPreview();
        camera.setPreviewCallback(null);

        camera.release();
        camera = null;
    }
}

上面的代码将发布使用Camera.open()打开的硬件相机;方法

如果您有自定义预览,则必须使用surfaceDestroyed方法 -

public void surfaceDestroyed(SurfaceHolder holder) {

    if(camera!=null){
        camera.stopPreview();
        camera.setPreviewCallback(null);

        camera.release();
        camera = null;
    }
}

希望它会对你有所帮助。

答案 1 :(得分:0)

调用相关活动的onPause()时释放摄像机是安全的做法。因此,我建议不要将活动的Camera对象从一个Activity传递给另一个Activity。我经常使用Fragments来更改UI,同时仍然保持Camera处于活动状态。

在某些特殊情况下,即使在onPause()之后,应用也必须使用相机,请参见 Detect when another app tries to use the camera 。并非在所有情况下都是可行的,但永远都很难处理。