analysis: full official-app reverse artifacts (jadx sources, ghidra libcxsdk decomp, authoritative protocol conclusions) + docs
This commit is contained in:
@@ -0,0 +1,103 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user