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

问题描述 投票:1回答:2

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

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

java android camera
2个回答
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;
    }
}

希望它会对你有所帮助。


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.