【问题标题】:Camera 2 - App will minimizing when calling "openCamera" method in Camera 2 APICamera 2 - 在 Camera 2 API 中调用“openCamera”方法时,应用程序将最小化
【发布时间】:2016-02-12 09:46:15
【问题描述】:

我正在使用最新的 Camera 2 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();
            }
        }
    }
}

我的问题是当我点击按钮选择相机时应用程序会自动最小化。上面的 sn-p 在按钮点击时执行。我无法理解这个错误的原因。有人可以帮忙吗?

【问题讨论】:

  • 如果您也告诉我们错误是什么会有所帮助吗?
  • 你确定你用的是安卓版>= 21
  • logcat没有错误,调用“manager.openCamera”方法后应用会退出
  • 在 AndroidMonitor 中怎么样?当应用程序关闭时,应该有一大块红线,通常如果你滚动到开头,你会很好地了解第一行发生的事情。
  • @ankit aggarwal : 是的,我正在使用棒棒糖设备 :) >=21 ,实际上应用程序正在最小化,而不是崩溃和其他错误

标签: android camera android-camera android-camera2


【解决方案1】:

需要 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

【讨论】:

  • Hai 感谢您花时间回答我的问题,我已尝试使用此 sn-p,但问题仍未解决。
猜你喜欢
  • 1970-01-01
  • 2013-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多