我一直在使用Custom SurfaceView Camera。我需要使用前置摄像头,因为我的应用程序需要用户自拍。
为此,我已经使用以下代码检查了前置摄像头是否可用。
public boolean checkFrontCamera() {
int numCameras = Camera.getNumberOfCameras();
for (int i = 0; i < numCameras; i++) {
Camera.CameraInfo info = new Camera.CameraInfo();
Camera.getCameraInfo(i, info);
if (CameraSource.CAMERA_FACING_FRONT == info.facing) {
return true;
}
}
return false;
}
如果设备同时具有相机,则其工作正常,并返回true。但是如果设备只有一个摄像头,则此方法总是返回false,因为在这种情况下info.facing为0,并且在此代码中相同,CameraSource.CAMERA_FACING_FRONT为1。
对于相机,我使用过gms视觉库。下面的代码是相机来源。
CameraSource mCameraSource = new CameraSource.Builder(context, detector)
.setRequestedPreviewSize(640, 480)
.setFacing(CameraSource.CAMERA_FACING_FRONT)
.setRequestedFps(30.0f)
.build();
在这里,我需要通过相机对面的参数。
如果有其他选择,请提供。欢迎所有解决方案。
答案 0 :(得分:1)
您可以使用此方法返回相机对象
private Camera getCameraInstance() {
Camera c = null;
try {
if (Camera.getNumberOfCameras() >= 2) {
//Front facing camera
c = Camera.open(Camera.CameraInfo.CAMERA_FACING_FRONT);
} else {
// only has one camera (Rear)
c = Camera.open();
}
} catch (Exception e) {
// Camera is not available (in use or does not exist)
}
return c; // returns null if camera is unavailable
}