private boolean supportsYUV420() {
final CameraManager manager = (CameraManager) activity.getSystemService(Context.
CAMERA_SERVICE);
final int cameraID = (usingFrontCamera) ?
LENS_FACING_FRONT : CameraCharacteristics.
LENS_FACING_BACK;
try {
final CameraCharacteristics characteristics = manager.getCameraCharacteristics("" + cameraID);
final int hardwareLevel = characteristics.get(CameraCharacteristics.
INFO_SUPPORTED_HARDWARE_LEVEL);
/* See table defined in
*
https://developer.android.com/reference/kotlin/android/hardware/camera2/CameraDevice#createCaptureSession(android.hardware.camera2.params.SessionConfiguration) * if hardware supported level is either LEGACY (0), LIMITED (1), or EXTERNAL (4), then both target YUV processing isn't supported.
*/
isHardwareSupportFull = hardwareLevel != CameraCharacteristics.
INFO_SUPPORTED_HARDWARE_LEVEL_LEGACY &&
hardwareLevel != CameraCharacteristics.
INFO_SUPPORTED_HARDWARE_LEVEL_LIMITED &&
(Build.VERSION.
SDK_INT >= Build.VERSION_CODES.
P && hardwareLevel != CameraCharacteristics.
INFO_SUPPORTED_HARDWARE_LEVEL_EXTERNAL);
return isHardwareSupportFull;
} catch (CameraAccessException ex) {
Log.
e(
TAG, "Camera Access Exception retrieving camera characteristics for cameraID: " + cameraID, ex);
ex.printStackTrace();
}
return true;
}