我的应用程序控制着相机,最近有无法打开相机的设备发生了大量崩溃报告。按后退按钮可释放相机,但也会禁用后台模式。按主页按钮不会释放相机,打开相机时会导致崩溃,但启用后台模式。
如何在打开相机应用程序时释放相机?
答案 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 。并非在所有情况下都是可行的,但永远都很难处理。