250 lines
9.7 KiB
Java
250 lines
9.7 KiB
Java
package com.kofax.kmc.kui.uicontrols.captureanimations;
|
|
|
|
import android.os.Handler;
|
|
import android.os.Looper;
|
|
import android.os.Vibrator;
|
|
import com.kofax.kmc.kui.uicontrols.AutoFocusResultEvent;
|
|
import com.kofax.kmc.kui.uicontrols.AutoFocusResultListener;
|
|
import com.kofax.kmc.kui.uicontrols.ImageCaptureView;
|
|
import com.kofax.kmc.kui.uicontrols.ImageCapturedEvent;
|
|
import com.kofax.kmc.kui.uicontrols.ImageCapturedListener;
|
|
import com.kofax.kmc.kui.uicontrols.LevelnessEvent;
|
|
import com.kofax.kmc.kui.uicontrols.LevelnessListener;
|
|
import com.kofax.kmc.kui.uicontrols.StabilityDelayEvent;
|
|
import com.kofax.kmc.kui.uicontrols.StabilityDelayListener;
|
|
import com.kofax.kmc.kut.utilities.error.ErrorInfo;
|
|
import com.kofax.kmc.kut.utilities.error.KmcRuntimeException;
|
|
import java.util.Iterator;
|
|
import java.util.LinkedHashSet;
|
|
import java.util.Set;
|
|
|
|
/* loaded from: classes3.dex */
|
|
public abstract class CaptureExperience implements AutoFocusResultListener, ImageCapturedListener, LevelnessListener, StabilityDelayListener {
|
|
protected float _aspectRatio;
|
|
protected boolean _continuousCapture;
|
|
protected ImageCaptureView _imageCaptureView;
|
|
protected final Object _lock;
|
|
protected boolean _sdkCaptureRequested;
|
|
protected Vibrator _vibrator;
|
|
private boolean ml;
|
|
private CaptureExperienceCriteriaHolder mm;
|
|
private int mn;
|
|
private int mo;
|
|
protected CaptureExperienceData _captureExperienceData = new CaptureExperienceData();
|
|
protected final Handler _uiHandler = new Handler(Looper.getMainLooper());
|
|
protected Set<ImageCapturedListener> _imageCapturedListeners = new LinkedHashSet();
|
|
protected boolean _vibrationEnabled = false;
|
|
|
|
abstract void b(CaptureExperienceData captureExperienceData);
|
|
|
|
protected abstract void removeAllViews();
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public CaptureExperience(ImageCaptureView imageCaptureView) {
|
|
if (imageCaptureView == null) {
|
|
throw new KmcRuntimeException(ErrorInfo.KMC_GN_NULL_POINTER_EXCEPTION);
|
|
}
|
|
a((CaptureExperienceCriteriaHolder) null);
|
|
this._imageCaptureView = imageCaptureView;
|
|
this._lock = new Object();
|
|
addCameraEventListeners();
|
|
this._vibrator = (Vibrator) imageCaptureView.getContext().getSystemService("vibrator");
|
|
}
|
|
|
|
protected void addCameraEventListeners() {
|
|
this._imageCaptureView.addStabilityDelayListener(this);
|
|
this._imageCaptureView.addLevelnessListener(this);
|
|
this._imageCaptureView.addOnAutoFocusResultListener(this);
|
|
this._imageCaptureView.addOnImageCapturedListener(this);
|
|
}
|
|
|
|
protected void removeCameraEventListeners() {
|
|
this._imageCaptureView.removeStabilityDelayListener(this);
|
|
this._imageCaptureView.removeLevelnessListener(this);
|
|
this._imageCaptureView.removeOnAutoFocusResultListener(this);
|
|
this._imageCaptureView.removeOnImageCapturedListener(this);
|
|
}
|
|
|
|
void a(CaptureExperienceCriteriaHolder captureExperienceCriteriaHolder) {
|
|
if (captureExperienceCriteriaHolder == null) {
|
|
captureExperienceCriteriaHolder = new CaptureExperienceCriteriaHolder();
|
|
}
|
|
this.mm = captureExperienceCriteriaHolder;
|
|
}
|
|
|
|
final void a(CaptureExperienceData captureExperienceData) {
|
|
captureExperienceData.setSdkCaptureRequested(this._sdkCaptureRequested);
|
|
this._uiHandler.post(new Runnable(this, captureExperienceData) { // from class: com.kofax.kmc.kui.uicontrols.captureanimations.CaptureExperience.1
|
|
final CaptureExperienceData mp;
|
|
final CaptureExperience mq;
|
|
|
|
{
|
|
this.mq = this;
|
|
this.mp = captureExperienceData;
|
|
}
|
|
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
this.mq.b(this.mp);
|
|
}
|
|
});
|
|
synchronized (this._lock) {
|
|
if (this.ml && !this._sdkCaptureRequested && captureCriteriaMet(captureExperienceData)) {
|
|
captureExperienceData.setCriteriaMet(true);
|
|
captureExperienceData.setSdkCaptureRequested(true);
|
|
this._uiHandler.post(new Runnable(this, captureExperienceData) { // from class: com.kofax.kmc.kui.uicontrols.captureanimations.CaptureExperience.2
|
|
final CaptureExperienceData mp;
|
|
final CaptureExperience mq;
|
|
|
|
{
|
|
this.mq = this;
|
|
this.mp = captureExperienceData;
|
|
}
|
|
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
this.mq.b(this.mp);
|
|
}
|
|
});
|
|
this._sdkCaptureRequested = true;
|
|
this.ml = this._continuousCapture;
|
|
this._imageCaptureView.takePictureForCaptureExperience("com.kofax.kmc.kui.uicontrols.", this.mm.isRefocusBeforeCaptureEnabled());
|
|
}
|
|
}
|
|
}
|
|
|
|
protected boolean captureCriteriaMet(CaptureExperienceData captureExperienceData) {
|
|
if (!captureCriteriaMetInternal(captureExperienceData)) {
|
|
captureExperienceData.setCriteriaMet(false);
|
|
return false;
|
|
}
|
|
return c(captureExperienceData);
|
|
}
|
|
|
|
public void addOnImageCapturedListener(ImageCapturedListener imageCapturedListener) {
|
|
if (imageCapturedListener != null) {
|
|
this._imageCapturedListeners.add(imageCapturedListener);
|
|
}
|
|
}
|
|
|
|
public void removeOnImageCapturedListener(ImageCapturedListener imageCapturedListener) {
|
|
this._imageCapturedListeners.remove(imageCapturedListener);
|
|
}
|
|
|
|
public void takePicture() {
|
|
d(false);
|
|
}
|
|
|
|
public void takePictureContinually() {
|
|
d(true);
|
|
}
|
|
|
|
private void d(boolean z) {
|
|
CaptureExperienceData captureExperienceData = new CaptureExperienceData();
|
|
this._captureExperienceData = captureExperienceData;
|
|
this._sdkCaptureRequested = false;
|
|
this.mn = 0;
|
|
b(captureExperienceData);
|
|
synchronized (this._lock) {
|
|
this._continuousCapture = z;
|
|
this.ml = true;
|
|
}
|
|
}
|
|
|
|
public void stopCapture() {
|
|
this._captureExperienceData = new CaptureExperienceData();
|
|
this.ml = false;
|
|
}
|
|
|
|
@Override // com.kofax.kmc.kui.uicontrols.ImageCapturedListener
|
|
public void onImageCaptured(ImageCapturedEvent imageCapturedEvent) {
|
|
CaptureExperienceData captureExperienceData = new CaptureExperienceData(this._captureExperienceData);
|
|
this._captureExperienceData = captureExperienceData;
|
|
this.mn = 0;
|
|
captureExperienceData.setDocumentDetectionGuidanceList(null);
|
|
a(this._captureExperienceData);
|
|
synchronized (this._lock) {
|
|
this._sdkCaptureRequested = false;
|
|
}
|
|
if (this._vibrationEnabled) {
|
|
try {
|
|
this._vibrator.vibrate(500L);
|
|
} catch (Exception unused) {
|
|
}
|
|
}
|
|
}
|
|
|
|
protected void invokeImageCapturedListeners(ImageCapturedEvent imageCapturedEvent) {
|
|
Iterator<ImageCapturedListener> it = this._imageCapturedListeners.iterator();
|
|
while (it.hasNext()) {
|
|
it.next().onImageCaptured(imageCapturedEvent);
|
|
}
|
|
}
|
|
|
|
@Override // com.kofax.kmc.kui.uicontrols.AutoFocusResultListener
|
|
public void onAutoFocus(AutoFocusResultEvent autoFocusResultEvent) {
|
|
this._captureExperienceData.setFocused(autoFocusResultEvent.getSuccess());
|
|
a(this._captureExperienceData);
|
|
}
|
|
|
|
@Override // com.kofax.kmc.kui.uicontrols.LevelnessListener
|
|
public void onLevelness(LevelnessEvent levelnessEvent) {
|
|
this._captureExperienceData.setPitch(Math.abs(levelnessEvent.getPitch()));
|
|
this._captureExperienceData.setRoll(Math.abs(levelnessEvent.getRoll()));
|
|
a(this._captureExperienceData);
|
|
}
|
|
|
|
@Override // com.kofax.kmc.kui.uicontrols.StabilityDelayListener
|
|
public void onStabilityDelay(StabilityDelayEvent stabilityDelayEvent) {
|
|
this._captureExperienceData.setStability(stabilityDelayEvent.getStability());
|
|
a(this._captureExperienceData);
|
|
}
|
|
|
|
boolean c(CaptureExperienceData captureExperienceData) {
|
|
if (!this.mm.isStabilityThresholdEnabled()) {
|
|
return true;
|
|
}
|
|
this.mn++;
|
|
int stability = this.mo + captureExperienceData.getStability();
|
|
this.mo = stability;
|
|
int i = this.mn;
|
|
if (i >= 6) {
|
|
int stabilityThreshold = (stability / i) - this.mm.getStabilityThreshold();
|
|
this.mo = 0;
|
|
this.mn = 0;
|
|
if (stabilityThreshold > 0) {
|
|
return true;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
protected boolean captureCriteriaMetInternal(CaptureExperienceData captureExperienceData) {
|
|
if (this.mm.isFocusEnabled() && !captureExperienceData.isFocused()) {
|
|
return false;
|
|
}
|
|
if (!this.mm.isPitchThresholdEnabled() || this.mm.getPitchThreshold() == 45 || this.mm.getPitchThreshold() >= captureExperienceData.getPitch()) {
|
|
return !this.mm.isRollThresholdEnabled() || this.mm.getRollThreshold() == 45 || this.mm.getRollThreshold() >= captureExperienceData.getRoll();
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public void destroy() {
|
|
removeCameraEventListeners();
|
|
removeAllViews();
|
|
CaptureExperienceData captureExperienceData = this._captureExperienceData;
|
|
if (captureExperienceData != null) {
|
|
captureExperienceData.setDocumentDetectionGuidanceList(null);
|
|
this._captureExperienceData = null;
|
|
}
|
|
}
|
|
|
|
public void setVibrationEnabled(boolean z) {
|
|
this._vibrationEnabled = z;
|
|
}
|
|
|
|
public boolean isVibrationEnabled() {
|
|
return this._vibrationEnabled;
|
|
}
|
|
}
|