【问题标题】:How to release camera when camera is opened?打开相机时如何释放相机?
【发布时间】:2015-04-29 04:29:39
【问题描述】:

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

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

【问题讨论】:

    标签: java android camera


    【解决方案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;
        }
    }
    

    希望对你有所帮助。

    【讨论】:

    • 这可以从一些 cmets 或解释中受益。此外,还有一些错别字(onDestory)。
    • 不回答问题。只有在打开相机应用程序时才需要。
    • 所以在你的活动 onDestroy 方法中放置我的代码。如果你想在捕获图像后关闭相机,那么你可以在那里使用相同的代码。
    • 你还是不懂拉维。打开相机时是否可以完全停止应用程序?
    • 好的,在这种情况下检查这个 - stackoverflow.com/questions/6330200/… answer
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-04-15
      • 1970-01-01
      • 2014-11-09
      • 1970-01-01
      • 2017-05-24
      • 2013-07-24
      • 2022-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多