Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 打开相机时如何释放相机?_Java_Android_Camera - Fatal编程技术网

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

Java 打开相机时如何释放相机?,java,android,camera,Java,Android,Camera,我的应用程序控制摄像头,最近有很多无法打开摄像头的设备的崩溃报告。按下后退按钮可释放相机,但也会禁用背景模式。按下home(主页)按钮不会释放相机,在打开相机时会导致崩溃,但会启用背景模式 当摄像头应用程序本身打开时,如何释放摄像头?当您在android应用程序中使用android硬件摄像头时,您应该释放它,以便其他应用程序或您的应用程序可以使用它。 在移动到应用程序中的其他活动之前,最好先释放摄像头 使用以下代码- protected void onDestroy(){ if(camer

我的应用程序控制摄像头,最近有很多无法打开摄像头的设备的崩溃报告。按下后退按钮可释放相机,但也会禁用背景模式。按下home(主页)按钮不会释放相机,在打开相机时会导致崩溃,但会启用背景模式


当摄像头应用程序本身打开时,如何释放摄像头?

当您在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()
时释放摄像头被认为是安全的做法。根据这一点,我建议不要将活动摄影机对象从一个活动传递到另一个活动。我经常使用片段来更改UI,同时保持相机的活动状态


有些特殊情况下,即使在onPause()之后,应用程序也必须使用摄像头,请参见例如。并非在所有情况下都可以做到这一点,但从来都不容易处理。

这可能得益于一些评论或解释。此外,还有一些打字错误(
onDestory
),无法回答问题。只有当相机应用程序打开时才需要。所以在你的activity onDestroy方法中输入我的代码。如果你想在图像拍摄后关闭相机,那么你可以在那里使用相同的代码。你仍然不理解Ravi。当相机打开时,是否可以完全停止应用程序?好的,在这种情况下,请检查此-答案