package com.flurgle.camerakit; import android.annotation.TargetApi; import android.hardware.Camera; import android.hardware.camera2.CameraCharacteristics; import android.support.v4.util.SparseArrayCompat; import android.util.SparseIntArray; public class ConstantMapper { private abstract static class BaseMapper<T> { protected int mCameraKitConstant; protected BaseMapper(int cameraKitConstant) { this.mCameraKitConstant = cameraKitConstant; } abstract T map(); } static class Flash extends BaseMapper<String> { private static final SparseArrayCompat<String> FLASH_MODES = new SparseArrayCompat<>(); static { FLASH_MODES.put(CameraKit.Constants.FLASH_OFF, Camera.Parameters.FLASH_MODE_OFF); FLASH_MODES.put(CameraKit.Constants.FLASH_ON, Camera.Parameters.FLASH_MODE_ON); FLASH_MODES.put(CameraKit.Constants.FLASH_AUTO, Camera.Parameters.FLASH_MODE_AUTO); } protected Flash(int cameraKitConstant) { super(cameraKitConstant); } @Override String map() { return FLASH_MODES.get(mCameraKitConstant, FLASH_MODES.get(CameraKit.Constants.FLASH_OFF)); } } @TargetApi(21) static class Flash2 extends BaseMapper<String> { protected Flash2(int cameraKitConstant) { super(cameraKitConstant); } @Override String map() { return null; } } static class Facing extends BaseMapper<Integer> { private static final SparseArrayCompat<Integer> FACING_MODES = new SparseArrayCompat<>(); static { FACING_MODES.put(CameraKit.Constants.FACING_BACK, Camera.CameraInfo.CAMERA_FACING_BACK); FACING_MODES.put(CameraKit.Constants.FACING_FRONT, Camera.CameraInfo.CAMERA_FACING_FRONT); } protected Facing(int cameraKitConstant) { super(cameraKitConstant); } @Override Integer map() { return FACING_MODES.get(mCameraKitConstant, FACING_MODES.get(CameraKit.Constants.FACING_BACK)); } } @TargetApi(21) static class Facing2 extends BaseMapper<Integer> { private static final SparseIntArray FACING_MODES = new SparseIntArray(); static { FACING_MODES.put(CameraKit.Constants.FACING_BACK, CameraCharacteristics.LENS_FACING_BACK); FACING_MODES.put(CameraKit.Constants.FACING_FRONT, CameraCharacteristics.LENS_FACING_FRONT); } protected Facing2(int cameraKitConstant) { super(cameraKitConstant); } @Override Integer map() { return FACING_MODES.get(mCameraKitConstant, FACING_MODES.get(CameraKit.Constants.FACING_BACK)); } } }