我正在使用最新的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();
}
}
}
}
我的问题是当我点击按钮选择相机时应用程序会自动最小化。上面的代码片段在按钮点击时执行。我无法理解这个错误的原因。有人可以帮忙吗?
答案 0 :(得分:0)
需要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;
}