556 lines
20 KiB
Java
556 lines
20 KiB
Java
package io.flutter.plugins.camera;
|
|
|
|
import android.app.Activity;
|
|
import android.hardware.camera2.CameraAccessException;
|
|
import android.os.Handler;
|
|
import android.os.Looper;
|
|
import io.flutter.plugin.common.BinaryMessenger;
|
|
import io.flutter.plugin.common.EventChannel;
|
|
import io.flutter.plugin.common.MethodCall;
|
|
import io.flutter.plugin.common.MethodChannel;
|
|
import io.flutter.plugins.camera.CameraPermissions;
|
|
import io.flutter.plugins.camera.features.CameraFeatureFactoryImpl;
|
|
import io.flutter.plugins.camera.features.Point;
|
|
import io.flutter.plugins.camera.features.autofocus.FocusMode;
|
|
import io.flutter.plugins.camera.features.exposurelock.ExposureMode;
|
|
import io.flutter.plugins.camera.features.flash.FlashMode;
|
|
import io.flutter.plugins.camera.features.resolution.ResolutionPreset;
|
|
import io.flutter.view.TextureRegistry;
|
|
import java.util.HashMap;
|
|
import java.util.Objects;
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
/* loaded from: classes6.dex */
|
|
public final class MethodCallHandlerImpl implements MethodChannel.MethodCallHandler {
|
|
static final boolean $assertionsDisabled = false;
|
|
private final Activity activity;
|
|
private Camera camera;
|
|
private final CameraPermissions cameraPermissions;
|
|
private final EventChannel imageStreamChannel;
|
|
private final BinaryMessenger messenger;
|
|
private final MethodChannel methodChannel;
|
|
private final CameraPermissions.PermissionsRegistry permissionsRegistry;
|
|
private final TextureRegistry textureRegistry;
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public MethodCallHandlerImpl(Activity activity, BinaryMessenger binaryMessenger, CameraPermissions cameraPermissions, CameraPermissions.PermissionsRegistry permissionsRegistry, TextureRegistry textureRegistry) {
|
|
this.activity = activity;
|
|
this.messenger = binaryMessenger;
|
|
this.cameraPermissions = cameraPermissions;
|
|
this.permissionsRegistry = permissionsRegistry;
|
|
this.textureRegistry = textureRegistry;
|
|
MethodChannel methodChannel = new MethodChannel(binaryMessenger, "plugins.flutter.io/camera_android");
|
|
this.methodChannel = methodChannel;
|
|
this.imageStreamChannel = new EventChannel(binaryMessenger, "plugins.flutter.io/camera_android/imageStream");
|
|
methodChannel.setMethodCallHandler(this);
|
|
}
|
|
|
|
/* JADX WARN: Can't fix incorrect switch cases order, some code will duplicate */
|
|
@Override // io.flutter.plugin.common.MethodChannel.MethodCallHandler
|
|
public final void onMethodCall(final MethodCall methodCall, final MethodChannel.Result result) {
|
|
char c;
|
|
Double d;
|
|
Double d2;
|
|
String str = methodCall.method;
|
|
str.hashCode();
|
|
switch (str.hashCode()) {
|
|
case -2037208347:
|
|
if (str.equals("availableCameras")) {
|
|
c = 0;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case -1982465099:
|
|
if (str.equals("getMinZoomLevel")) {
|
|
c = 1;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case -1849130371:
|
|
if (str.equals("getExposureOffsetStepSize")) {
|
|
c = 2;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case -1783353674:
|
|
if (str.equals("getMinExposureOffset")) {
|
|
c = 3;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case -1352294148:
|
|
if (str.equals("create")) {
|
|
c = 4;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case -1313121483:
|
|
if (str.equals("lockCaptureOrientation")) {
|
|
c = 5;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case -1157944680:
|
|
if (str.equals("prepareForVideoRecording")) {
|
|
c = 6;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case -1151868548:
|
|
if (str.equals("setExposureOffset")) {
|
|
c = 7;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case -1127151527:
|
|
if (str.equals("setFocusMode")) {
|
|
c = '\b';
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case -1120721617:
|
|
if (str.equals("setZoomLevel")) {
|
|
c = '\t';
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case -1077837554:
|
|
if (str.equals("unlockCaptureOrientation")) {
|
|
c = '\n';
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case -579183206:
|
|
if (str.equals("setFocusPoint")) {
|
|
c = 11;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case 109225283:
|
|
if (str.equals("resumeVideoRecording")) {
|
|
c = '\f';
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case 186649688:
|
|
if (str.equals("stopVideoRecording")) {
|
|
c = '\r';
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case 196568648:
|
|
if (str.equals("getMaxExposureOffset")) {
|
|
c = 14;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case 391927665:
|
|
if (str.equals("setFlashMode")) {
|
|
c = 15;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case 770486092:
|
|
if (str.equals("pauseVideoRecording")) {
|
|
c = 16;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case 871091088:
|
|
if (str.equals("initialize")) {
|
|
c = 17;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case 888134860:
|
|
if (str.equals("setExposureMode")) {
|
|
c = 18;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case 888641243:
|
|
if (str.equals("resumePreview")) {
|
|
c = 19;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case 954656505:
|
|
if (str.equals("startImageStream")) {
|
|
c = 20;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case 1018096247:
|
|
if (str.equals("takePicture")) {
|
|
c = 21;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case 1120116920:
|
|
if (str.equals("startVideoRecording")) {
|
|
c = 22;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case 1422316786:
|
|
if (str.equals("pausePreview")) {
|
|
c = 23;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case 1671767583:
|
|
if (str.equals("dispose")) {
|
|
c = 24;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case 1672159065:
|
|
if (str.equals("stopImageStream")) {
|
|
c = 25;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case 1765152647:
|
|
if (str.equals("setExposurePoint")) {
|
|
c = 26;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
case 1838076131:
|
|
if (str.equals("getMaxZoomLevel")) {
|
|
c = 27;
|
|
break;
|
|
}
|
|
c = 65535;
|
|
break;
|
|
default:
|
|
c = 65535;
|
|
break;
|
|
}
|
|
Double d3 = null;
|
|
Double d4 = null;
|
|
switch (c) {
|
|
case 0:
|
|
try {
|
|
result.success(CameraUtils.getAvailableCameras(this.activity));
|
|
return;
|
|
} catch (Exception e) {
|
|
handleException(e, result);
|
|
return;
|
|
}
|
|
case 1:
|
|
try {
|
|
result.success(Float.valueOf(this.camera.getMinZoomLevel()));
|
|
return;
|
|
} catch (Exception e2) {
|
|
handleException(e2, result);
|
|
return;
|
|
}
|
|
case 2:
|
|
try {
|
|
result.success(Double.valueOf(this.camera.getExposureOffsetStepSize()));
|
|
return;
|
|
} catch (Exception e3) {
|
|
handleException(e3, result);
|
|
return;
|
|
}
|
|
case 3:
|
|
try {
|
|
result.success(Double.valueOf(this.camera.getMinExposureOffset()));
|
|
return;
|
|
} catch (Exception e4) {
|
|
handleException(e4, result);
|
|
return;
|
|
}
|
|
case 4:
|
|
Camera camera = this.camera;
|
|
if (camera != null) {
|
|
camera.close();
|
|
}
|
|
this.cameraPermissions.requestPermissions(this.activity, this.permissionsRegistry, ((Boolean) methodCall.argument("enableAudio")).booleanValue(), new CameraPermissions.ResultCallback(this, methodCall, result) { // from class: io.flutter.plugins.camera.MethodCallHandlerImpl$$ExternalSyntheticLambda0
|
|
public final MethodCallHandlerImpl f$0;
|
|
public final MethodCall f$1;
|
|
public final MethodChannel.Result f$2;
|
|
|
|
@Override // io.flutter.plugins.camera.CameraPermissions.ResultCallback
|
|
public final void onResult(String str2, String str3) {
|
|
this.f$0.m348x71af31cb(this.f$1, this.f$2, str2, str3);
|
|
}
|
|
|
|
{
|
|
this.f$0 = this;
|
|
this.f$1 = methodCall;
|
|
this.f$2 = result;
|
|
}
|
|
});
|
|
return;
|
|
case 5:
|
|
try {
|
|
this.camera.lockCaptureOrientation(CameraUtils.deserializeDeviceOrientation((String) methodCall.argument("orientation")));
|
|
result.success(null);
|
|
return;
|
|
} catch (Exception e5) {
|
|
handleException(e5, result);
|
|
return;
|
|
}
|
|
case 6:
|
|
result.success(null);
|
|
return;
|
|
case 7:
|
|
try {
|
|
this.camera.setExposureOffset(result, ((Double) methodCall.argument("offset")).doubleValue());
|
|
return;
|
|
} catch (Exception e6) {
|
|
handleException(e6, result);
|
|
return;
|
|
}
|
|
case '\b':
|
|
String str2 = (String) methodCall.argument("mode");
|
|
FocusMode valueForString = FocusMode.getValueForString(str2);
|
|
if (valueForString == null) {
|
|
result.error("setFocusModeFailed", "Unknown focus mode ".concat(String.valueOf(str2)), null);
|
|
return;
|
|
}
|
|
try {
|
|
this.camera.setFocusMode(result, valueForString);
|
|
return;
|
|
} catch (Exception e7) {
|
|
handleException(e7, result);
|
|
return;
|
|
}
|
|
case '\t':
|
|
Double d5 = (Double) methodCall.argument("zoom");
|
|
if (d5 == null) {
|
|
result.error("ZOOM_ERROR", "setZoomLevel is called without specifying a zoom level.", null);
|
|
return;
|
|
}
|
|
try {
|
|
this.camera.setZoomLevel(result, d5.floatValue());
|
|
return;
|
|
} catch (Exception e8) {
|
|
handleException(e8, result);
|
|
return;
|
|
}
|
|
case '\n':
|
|
try {
|
|
this.camera.unlockCaptureOrientation();
|
|
result.success(null);
|
|
return;
|
|
} catch (Exception e9) {
|
|
handleException(e9, result);
|
|
return;
|
|
}
|
|
case 11:
|
|
Boolean bool = (Boolean) methodCall.argument("reset");
|
|
if (bool == null || !bool.booleanValue()) {
|
|
d3 = (Double) methodCall.argument("x");
|
|
d = (Double) methodCall.argument("y");
|
|
} else {
|
|
d = null;
|
|
}
|
|
try {
|
|
this.camera.setFocusPoint(result, new Point(d3, d));
|
|
return;
|
|
} catch (Exception e10) {
|
|
handleException(e10, result);
|
|
return;
|
|
}
|
|
case '\f':
|
|
this.camera.resumeVideoRecording(result);
|
|
return;
|
|
case '\r':
|
|
this.camera.stopVideoRecording(result);
|
|
return;
|
|
case 14:
|
|
try {
|
|
result.success(Double.valueOf(this.camera.getMaxExposureOffset()));
|
|
return;
|
|
} catch (Exception e11) {
|
|
handleException(e11, result);
|
|
return;
|
|
}
|
|
case 15:
|
|
String str3 = (String) methodCall.argument("mode");
|
|
FlashMode valueForString2 = FlashMode.getValueForString(str3);
|
|
if (valueForString2 == null) {
|
|
result.error("setFlashModeFailed", "Unknown flash mode ".concat(String.valueOf(str3)), null);
|
|
return;
|
|
}
|
|
try {
|
|
this.camera.setFlashMode(result, valueForString2);
|
|
return;
|
|
} catch (Exception e12) {
|
|
handleException(e12, result);
|
|
return;
|
|
}
|
|
case 16:
|
|
this.camera.pauseVideoRecording(result);
|
|
return;
|
|
case 17:
|
|
Camera camera2 = this.camera;
|
|
if (camera2 != null) {
|
|
try {
|
|
camera2.open((String) methodCall.argument("imageFormatGroup"));
|
|
result.success(null);
|
|
return;
|
|
} catch (Exception e13) {
|
|
handleException(e13, result);
|
|
return;
|
|
}
|
|
}
|
|
result.error("cameraNotFound", "Camera not found. Please call the 'create' method before calling 'initialize'.", null);
|
|
return;
|
|
case 18:
|
|
String str4 = (String) methodCall.argument("mode");
|
|
ExposureMode valueForString3 = ExposureMode.getValueForString(str4);
|
|
if (valueForString3 == null) {
|
|
result.error("setExposureModeFailed", "Unknown exposure mode ".concat(String.valueOf(str4)), null);
|
|
return;
|
|
}
|
|
try {
|
|
this.camera.setExposureMode(result, valueForString3);
|
|
return;
|
|
} catch (Exception e14) {
|
|
handleException(e14, result);
|
|
return;
|
|
}
|
|
case 19:
|
|
this.camera.resumePreview();
|
|
result.success(null);
|
|
return;
|
|
case 20:
|
|
try {
|
|
this.camera.startPreviewWithImageStream(this.imageStreamChannel);
|
|
result.success(null);
|
|
return;
|
|
} catch (Exception e15) {
|
|
handleException(e15, result);
|
|
return;
|
|
}
|
|
case 21:
|
|
this.camera.takePicture(result);
|
|
return;
|
|
case 22:
|
|
this.camera.startVideoRecording(result, Objects.equals(methodCall.argument("enableStream"), Boolean.TRUE) ? this.imageStreamChannel : null);
|
|
return;
|
|
case 23:
|
|
try {
|
|
this.camera.pausePreview();
|
|
result.success(null);
|
|
return;
|
|
} catch (Exception e16) {
|
|
handleException(e16, result);
|
|
return;
|
|
}
|
|
case 24:
|
|
Camera camera3 = this.camera;
|
|
if (camera3 != null) {
|
|
camera3.dispose();
|
|
}
|
|
result.success(null);
|
|
return;
|
|
case 25:
|
|
try {
|
|
this.camera.startPreview();
|
|
result.success(null);
|
|
return;
|
|
} catch (Exception e17) {
|
|
handleException(e17, result);
|
|
return;
|
|
}
|
|
case 26:
|
|
Boolean bool2 = (Boolean) methodCall.argument("reset");
|
|
if (bool2 == null || !bool2.booleanValue()) {
|
|
d4 = (Double) methodCall.argument("x");
|
|
d2 = (Double) methodCall.argument("y");
|
|
} else {
|
|
d2 = null;
|
|
}
|
|
try {
|
|
this.camera.setExposurePoint(result, new Point(d4, d2));
|
|
return;
|
|
} catch (Exception e18) {
|
|
handleException(e18, result);
|
|
return;
|
|
}
|
|
case 27:
|
|
try {
|
|
result.success(Float.valueOf(this.camera.getMaxZoomLevel()));
|
|
return;
|
|
} catch (Exception e19) {
|
|
handleException(e19, result);
|
|
return;
|
|
}
|
|
default:
|
|
result.notImplemented();
|
|
return;
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
/* renamed from: lambda$onMethodCall$0$io-flutter-plugins-camera-MethodCallHandlerImpl, reason: not valid java name */
|
|
public final /* synthetic */ void m348x71af31cb(MethodCall methodCall, MethodChannel.Result result, String str, String str2) {
|
|
if (str == null) {
|
|
try {
|
|
instantiateCamera(methodCall, result);
|
|
return;
|
|
} catch (Exception e) {
|
|
handleException(e, result);
|
|
return;
|
|
}
|
|
}
|
|
result.error(str, str2, null);
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public final void stopListening() {
|
|
this.methodChannel.setMethodCallHandler(null);
|
|
}
|
|
|
|
private void instantiateCamera(MethodCall methodCall, MethodChannel.Result result) throws CameraAccessException {
|
|
String str = (String) methodCall.argument("cameraName");
|
|
String str2 = (String) methodCall.argument("resolutionPreset");
|
|
boolean booleanValue = ((Boolean) methodCall.argument("enableAudio")).booleanValue();
|
|
TextureRegistry.SurfaceTextureEntry createSurfaceTexture = this.textureRegistry.createSurfaceTexture();
|
|
this.camera = new Camera(this.activity, createSurfaceTexture, new CameraFeatureFactoryImpl(), new DartMessenger(this.messenger, createSurfaceTexture.id(), new Handler(Looper.getMainLooper())), new CameraPropertiesImpl(str, CameraUtils.getCameraManager(this.activity)), ResolutionPreset.valueOf(str2), booleanValue);
|
|
HashMap hashMap = new HashMap();
|
|
hashMap.put("cameraId", Long.valueOf(createSurfaceTexture.id()));
|
|
result.success(hashMap);
|
|
}
|
|
|
|
private void handleException(Exception exc, MethodChannel.Result result) {
|
|
if (exc instanceof CameraAccessException) {
|
|
result.error("CameraAccess", exc.getMessage(), null);
|
|
return;
|
|
}
|
|
throw ((RuntimeException) exc);
|
|
}
|
|
}
|