104 lines
3.4 KiB
Java
104 lines
3.4 KiB
Java
package cn.com.magnity.magnitycx.sdk;
|
|
|
|
import android.hardware.Camera;
|
|
import android.view.SurfaceHolder;
|
|
import cn.com.magnity.magnitycx.MagApplication;
|
|
import java.util.List;
|
|
|
|
/* loaded from: classes.dex */
|
|
public class VisibleCamera {
|
|
private static Camera camera_;
|
|
private static boolean isPreview_;
|
|
|
|
public static void initCamera(int id, SurfaceHolder surfaceHolder, int size) {
|
|
if (Camera.getNumberOfCameras() >= 1) {
|
|
if (!isPreview_) {
|
|
camera_ = Camera.open(id);
|
|
setPreviewOrientation(id);
|
|
}
|
|
if (camera_ != null && !isPreview_) {
|
|
try {
|
|
Camera.Parameters parameters = camera_.getParameters();
|
|
setPreviewSize(parameters, size);
|
|
parameters.setPictureFormat(256);
|
|
parameters.set("jpeg-quality", 85);
|
|
parameters.setFlashMode("auto");
|
|
parameters.setFocusMode("continuous-picture");
|
|
camera_.setParameters(parameters);
|
|
camera_.setPreviewDisplay(surfaceHolder);
|
|
camera_.startPreview();
|
|
camera_.cancelAutoFocus();
|
|
} catch (Exception e) {
|
|
}
|
|
isPreview_ = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
public static void deinitCamera() {
|
|
if (camera_ != null) {
|
|
if (isPreview_) {
|
|
camera_.stopPreview();
|
|
isPreview_ = false;
|
|
}
|
|
camera_.release();
|
|
camera_ = null;
|
|
}
|
|
}
|
|
|
|
private static void setPreviewSize(Camera.Parameters parameters, int size) {
|
|
List<Camera.Size> list = parameters.getSupportedPreviewSizes();
|
|
int num = list.size();
|
|
for (int i = 0; i < num; i++) {
|
|
Camera.Size s = list.get(i);
|
|
if ((s.width <= s.height || s.width * 3 == s.height * 4) && ((s.width >= s.height || s.width * 4 == s.height * 3) && Math.min(s.width, s.height) >= size)) {
|
|
parameters.setPreviewSize(s.width, s.height);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
private static void setPreviewOrientation(int id) {
|
|
int result;
|
|
if (camera_ != null) {
|
|
Camera.CameraInfo info = new Camera.CameraInfo();
|
|
Camera.getCameraInfo(id, info);
|
|
int rotation = MagApplication.windowManager.getDefaultDisplay().getRotation();
|
|
int degrees = 0;
|
|
switch (rotation) {
|
|
case 0:
|
|
degrees = 0;
|
|
break;
|
|
case 1:
|
|
degrees = 90;
|
|
break;
|
|
case 2:
|
|
degrees = 180;
|
|
break;
|
|
case 3:
|
|
degrees = 270;
|
|
break;
|
|
}
|
|
if (info.facing == 1) {
|
|
int result2 = (info.orientation + degrees) % 360;
|
|
result = (360 - result2) % 360;
|
|
} else {
|
|
result = ((info.orientation - degrees) + 360) % 360;
|
|
}
|
|
camera_.setDisplayOrientation(result);
|
|
}
|
|
}
|
|
|
|
public static boolean isCameraPermission() {
|
|
if (camera_ != null) {
|
|
return true;
|
|
}
|
|
try {
|
|
Camera.open().release();
|
|
return true;
|
|
} catch (Exception e) {
|
|
return false;
|
|
}
|
|
}
|
|
}
|