Android 无法连接到相机服务/相机服务器已死亡

Android 无法连接到相机服务/相机服务器已死亡,android,exception,camera,camera-api,Android,Exception,Camera,Camera Api,我需要一些帮助。我们创建了一个只使用前置摄像头的应用程序。然而,在某些设备上,我们面临一个问题。因此,在某些设备上,Camera.open方法会引发异常: Failed to connect to camera service. 该日志因设备而异,但属于以下两条消息之一: Camera W 21325 Camera server died! 或 在其他设备上工作正常。 这是我用来进入摄像机的密码- public Camera getFrontFacingCamera() { Cam

我需要一些帮助。我们创建了一个只使用前置摄像头的应用程序。然而,在某些设备上,我们面临一个问题。因此,在某些设备上,Camera.open方法会引发异常:

Failed to connect to camera service. 
该日志因设备而异,但属于以下两条消息之一:

Camera W 21325 Camera server died!

在其他设备上工作正常。 这是我用来进入摄像机的密码-

public Camera getFrontFacingCamera() {
    Camera object = null;
    try {
        object = Camera.open(findFrontFacingCamera());
    } catch (Exception e) {
        Mint.logException(e);
    }
    return object;
}

private static int findFrontFacingCamera() {
    int cameraId = -1;
    @SuppressWarnings("deprecation")
    int numberOfCameras = Camera.getNumberOfCameras();

    for (int i = 0; i < numberOfCameras; i++) {
        CameraInfo info = new CameraInfo();
        Camera.getCameraInfo(i, info);
        if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
            cameraId = i;
            break;
        }
    }
    return cameraId;
}

private void onCreate() {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
cameraObject = getFrontFacingCamera();
showCamera = new ShowCamera(this, cameraObject);
preview = (FrameLayout) findViewById(R.id.camera_preview);
preview.addView(showCamera);
}

@Override
protected void onPause() {
    super.onPause();
    if (cameraObject != null) {
        cameraObject.release();
        cameraObject = null;
        preview.removeView(showCamera);
        showCamera = null;
    }
以及舱单:

<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera.front" android:required="true"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>

有人知道如何纠正这个问题吗

每次试图打开有问题的设备上的摄像头时,您是否都会遇到此错误?不,这实际上是非常随机的。它会在有问题的设备上反复出现一段时间,但之后就不会了。我认为这与某些应用程序有关,可能是我的应用程序没有正确释放摄像头,但如果不是我的应用程序,我无法在另一个应用程序中释放摄像头。看起来可以在释放摄像头的位置添加代码吗?是的,在编辑中添加了。为什么只有在活动暂停时才释放摄像头?活动结束后发布它怎么样?这由isFinishing参数控制
public class ShowCamera extends SurfaceView implements SurfaceHolder.Callback {

private SurfaceHolder holdMe;
private Camera mCamera;
Context context;

public ShowCamera(Context context,Camera camera) {
  super(context);
  this.context=context;
  mCamera = camera;
  holdMe = getHolder();
  holdMe.addCallback(this);
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
  try   {
     mCamera.setPreviewDisplay(holder);
     mCamera.startPreview();
  } catch (IOException e) {
  }
}

@Override
public void surfaceDestroyed(SurfaceHolder arg0) {
   this.getHolder().removeCallback(this);
   mCamera.release();
}
}
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera.front" android:required="true"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>