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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了相机打开时如何释放相机?相关的知识,希望对你有一定的参考价值。

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

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

答案

当您在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;
    }
}

希望它会对你有所帮助。

另一答案

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

有一些特殊情况,即使在onPause()之后应用程序必须使用相机,请参阅例如Detect when another app tries to use the camera。并非在所有情况下这都是可能的,但从来都不容易处理。

以上是关于相机打开时如何释放相机?的主要内容,如果未能解决你的问题,请参考以下文章

相机打开时 NFC 不可用

如何处理没有黑屏的android相机打开

使用人脸 ID 从锁定屏幕打开时应用程序被阻止

在片段之间切换时如何处理相机?

如何从相机胶卷中挑选照片

如何在片段中从相机捕获图像,