相机2 - 在相机2中调用“openCamera”方法时,应用程序将最小化API

问题描述:

我正在开发使用最新相机2 API的相机应用程序,并且我的应用程序中有一个按钮用于选择前置相机和后置相机按钮点击。相机2 - 在相机2中调用“openCamera”方法时,应用程序将最小化API

代码是:

switch_camera.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     // facing = characteristics.get(CameraCharacteristics.LENS_FACING); 
     if (facing != null && facing == CameraCharacteristics.LENS_FACING_FRONT) { 
      //isfrontcam=true; 
      try { 
       manager.openCamera("0",mStateCallback,mBackgroundHandler); 
      } catch (SecurityException e) { 
       e.printStackTrace(); 
      } catch (CameraAccessException e) { 
       e.printStackTrace(); 
      } 
     } else if (facing != null && facing == CameraCharacteristics.LENS_FACING_BACK) { 
      // isfrontcam = true; 
      try { 
       manager.openCamera("1", mStateCallback, mBackgroundHandler); 
      } catch (SecurityException e) { 
       e.printStackTrace(); 
      } catch (CameraAccessException e) { 
       e.printStackTrace(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

我的问题是应用程序将自动最小化,当我点击按钮,选择上面的代码中camera.The上按一下按钮被执行。我无法理解这个错误的原因。谁能帮忙?

+0

如果你告诉我们的错误是什么,以及它会帮助吗? – iBobb

+0

您确定您使用的是android> = 21 –

+0

logcat没有错误,该应用程序在调用“manager.openCamera”方法后退出 – Gibs

需要logcat信息来了解您的实际问题,但没有很多信息,我猜下面的解决方案可能适合您。

而不是 - > manager.openCamera(“0”,mStateCallback,mBackgroundHandler); & manager.openCamera(“1”,mStateCallback,mBackgroundHandler);

尝试: manager.openCamera(getBackFacingCameraId(cManager) mStateCallback,mBackgroundHandler);

manager.openCamera(getFrontFacingCameraId(cManager),mStateCallback, mBackgroundHandler);

String getFrontFacingCameraId(CameraManager cManager){ 
    for(final String cameraId : cManager.getCameraIdList()){ 
     CameraCharacteristics characteristics =  
     cManager.getCameraCharacteristics(cameraId); 
     int cOrientation =   
     characteristics.get(CameraCharacteristics.LENS_FACING); 
     if(cOrientation == CameraCharacteristics.LENS_FACING_FRONT)  
      return cameraId; 
     } 
     return null; 
} 


String getBackFacingCameraId(CameraManager cManager){ 
    for(final String cameraId : cManager.getCameraIdList()){ 
     CameraCharacteristics characteristics =  
     cManager.getCameraCharacteristics(cameraId); 
     int cOrientation = 
     characteristics.get(CameraCharacteristics.LENS_FACING); 
     if(cOrientation == CameraCharacteristics.LENS_FACING_BACK) 
      return cameraId; 
     } 
     return null; 
} 

编号:https://android.googlesource.com/platform/packages/apps/Camera2/+/f5e51ec44934d6d687267d2aff6386f5b728dd9f/src/com/android/camera/one/v2/OneCameraManagerImpl.java

+0

Hai感谢花了时间为我的问题,我已经试过这个片段,但仍然没有解决问题。 – Gibs