正在查看: Crafto v9.3.3 应用的 CardScanActivity.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: Crafto v9.3.3 应用的 CardScanActivity.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package com.stripe.android.stripecardscan.cardscan;
import Hk.k;
import Hk.l;
import J9.f3;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.PointF;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Size;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.lifecycle.I;
import com.stripe.android.camera.CameraPreviewImage;
import com.stripe.android.camera.framework.Stats;
import com.stripe.android.camera.scanui.CameraView;
import com.stripe.android.camera.scanui.ScanErrorListener;
import com.stripe.android.camera.scanui.SimpleScanStateful;
import com.stripe.android.camera.scanui.ViewFinderBackground;
import com.stripe.android.stripecardscan.R;
import com.stripe.android.stripecardscan.cardscan.CardScanActivity$scanFlow$2;
import com.stripe.android.stripecardscan.cardscan.CardScanSheetResult;
import com.stripe.android.stripecardscan.cardscan.CardScanState;
import com.stripe.android.stripecardscan.cardscan.exception.InvalidStripePublishableKeyException;
import com.stripe.android.stripecardscan.cardscan.exception.UnknownScanException;
import com.stripe.android.stripecardscan.cardscan.result.MainLoopAggregator;
import com.stripe.android.stripecardscan.databinding.ActivityCardscanBinding;
import com.stripe.android.stripecardscan.framework.api.StripeApi;
import com.stripe.android.stripecardscan.framework.api.dto.ScanStatistics;
import com.stripe.android.stripecardscan.framework.util.AppDetails;
import com.stripe.android.stripecardscan.framework.util.Device;
import com.stripe.android.stripecardscan.framework.util.ScanConfig;
import com.stripe.android.stripecardscan.payment.card.ScannedCard;
import com.stripe.android.stripecardscan.scanui.CancellationReason;
import com.stripe.android.stripecardscan.scanui.ScanActivity;
import com.stripe.android.stripecardscan.scanui.util.ViewExtensionsKt;
import dl.H;
import dl.J;
import dl.Z;
import dl.g;
import il.p;
import java.util.HashMap;
import java.util.Iterator;
import java.util.concurrent.atomic.AtomicBoolean;
import kotlin.Metadata;
import kotlin.Unit;
import kotlin.collections.t;
import kotlin.jvm.functions.Function0;
import kotlin.jvm.internal.Intrinsics;
import oa.Q;
import org.jetbrains.annotations.NotNull;
@Metadata
public final class CardScanActivity extends ScanActivity implements SimpleScanStateful<CardScanState> {
@NotNull
private final AtomicBoolean hasPreviousValidResult;
@NotNull
private final Size minimumAnalysisResolution;
@NotNull
private final k params$delegate;
@NotNull
private final k previewFrame$delegate;
@NotNull
private final CardScanResultListener resultListener;
@NotNull
private final ScanErrorListener scanErrorListener;
@NotNull
private final k scanFlow$delegate;
private CardScanState scanState;
private CardScanState scanStatePrevious;
@NotNull
private final k viewBinding$delegate;
public CardScanActivity() {
Size size;
size = CardScanActivityKt.MINIMUM_RESOLUTION;
this.minimumAnalysisResolution = size;
this.viewBinding$delegate = l.b(new Function0<ActivityCardscanBinding>() {
{
super(0);
}
@NotNull
public final ActivityCardscanBinding m854invoke() {
return ActivityCardscanBinding.inflate(CardScanActivity.this.getLayoutInflater());
}
});
this.previewFrame$delegate = l.b(new Function0<FrameLayout>() {
{
super(0);
}
@NotNull
public final FrameLayout m852invoke() {
ActivityCardscanBinding viewBinding;
viewBinding = CardScanActivity.this.getViewBinding();
return viewBinding.previewFrame;
}
});
this.params$delegate = l.b(new Function0<CardScanSheetParams>() {
{
super(0);
}
@NotNull
public final CardScanSheetParams m851invoke() {
CardScanSheetParams cardScanSheetParams = (CardScanSheetParams) CardScanActivity.this.getIntent().getParcelableExtra("request");
return cardScanSheetParams == null ? new CardScanSheetParams(CameraView.FILL_ASPECT_RATIO) : cardScanSheetParams;
}
});
this.hasPreviousValidResult = new AtomicBoolean(false);
this.scanState = CardScanState.NotFound.INSTANCE;
this.scanErrorListener = new ScanErrorListener();
this.resultListener = new CardScanResultListener() {
@Override
public void cardScanComplete(@NotNull ScannedCard scannedCard) {
Intrinsics.checkNotNullParameter(scannedCard, "card");
Intent putExtra = new Intent().putExtra("result", new CardScanSheetResult.Completed(new ScannedCard(scannedCard.getPan())));
Intrinsics.checkNotNullExpressionValue(putExtra, "Intent()\n … )\n )");
CardScanActivity.this.setResult(-1, putExtra);
CardScanActivity.this.closeScanner();
}
@Override
public void failed(Throwable th) {
Intent intent = new Intent();
if (th == null) {
th = new UnknownScanException(null, 1, null);
}
Intent putExtra = intent.putExtra("result", new CardScanSheetResult.Failed(th));
Intrinsics.checkNotNullExpressionValue(putExtra, "Intent()\n …())\n )");
CardScanActivity.this.setResult(0, putExtra);
}
@Override
public void userCanceled(@NotNull CancellationReason cancellationReason) {
Intrinsics.checkNotNullParameter(cancellationReason, "reason");
Intent putExtra = new Intent().putExtra("result", new CardScanSheetResult.Canceled(cancellationReason));
Intrinsics.checkNotNullExpressionValue(putExtra, "Intent()\n …on)\n )");
CardScanActivity.this.setResult(0, putExtra);
}
};
this.scanFlow$delegate = l.b(new Function0<CardScanActivity$scanFlow$2.AnonymousClass1>() {
{
super(0);
}
@NotNull
public final AnonymousClass1 m853invoke() {
ScanErrorListener scanErrorListener = CardScanActivity.this.getScanErrorListener();
final CardScanActivity cardScanActivity = CardScanActivity.this;
return new CardScanFlow(scanErrorListener) {
@Override
public Object onInterimResult(MainLoopAggregator.InterimResult interimResult, Kk.c cVar) {
return onInterimResult2(interimResult, (Kk.c<? super Unit>) cVar);
}
@Override
public Object onReset(@NotNull Kk.c<? super Unit> cVar) {
CardScanActivity cardScanActivity2 = CardScanActivity.this;
kl.c cVar2 = Z.a;
g.b(cardScanActivity2, p.a, (J) null, new CardScanActivity$scanFlow$2$1$onReset$2(cardScanActivity2, null), 2);
return Unit.a;
}
@Override
public Object onResult(Object obj, Kk.c cVar) {
return onResult((MainLoopAggregator.FinalResult) obj, (Kk.c<? super Unit>) cVar);
}
public Object onInterimResult2(@NotNull MainLoopAggregator.InterimResult interimResult, @NotNull Kk.c<? super Unit> cVar) {
CardScanActivity cardScanActivity2 = CardScanActivity.this;
kl.c cVar2 = Z.a;
g.b(cardScanActivity2, p.a, (J) null, new CardScanActivity$scanFlow$2$1$onInterimResult$2(interimResult, cardScanActivity2, null), 2);
return Unit.a;
}
public Object onResult(@NotNull MainLoopAggregator.FinalResult finalResult, @NotNull Kk.c<? super Unit> cVar) {
CardScanActivity cardScanActivity2 = CardScanActivity.this;
kl.c cVar2 = Z.a;
g.b(cardScanActivity2, p.a, (J) null, new CardScanActivity$scanFlow$2$1$onResult$2(cardScanActivity2, finalResult, null), 2);
return Unit.a;
}
};
}
});
}
private final boolean ensureValidParams() {
if (getParams().getStripePublishableKey().length() != 0) {
return true;
}
scanFailure(new InvalidStripePublishableKeyException("Missing publishable key"));
return false;
}
private final CardScanSheetParams getParams() {
return (CardScanSheetParams) this.params$delegate.getValue();
}
private final CardScanFlow getScanFlow() {
return (CardScanFlow) this.scanFlow$delegate.getValue();
}
public final ActivityCardscanBinding getViewBinding() {
return (ActivityCardscanBinding) this.viewBinding$delegate.getValue();
}
public static final void m847onCreate$lambda0(CardScanActivity cardScanActivity, View view) {
Intrinsics.checkNotNullParameter(cardScanActivity, "this$0");
cardScanActivity.userClosedScanner();
}
public static final void m848onCreate$lambda1(CardScanActivity cardScanActivity, View view) {
Intrinsics.checkNotNullParameter(cardScanActivity, "this$0");
cardScanActivity.toggleFlashlight();
}
public static final void m849onCreate$lambda2(CardScanActivity cardScanActivity, View view) {
Intrinsics.checkNotNullParameter(cardScanActivity, "this$0");
cardScanActivity.toggleCamera();
}
public static final boolean m850onCreate$lambda3(CardScanActivity cardScanActivity, View view, MotionEvent motionEvent) {
Intrinsics.checkNotNullParameter(cardScanActivity, "this$0");
cardScanActivity.setFocus(new PointF(motionEvent.getX() + cardScanActivity.getViewBinding().viewFinderWindow.getLeft(), motionEvent.getY() + cardScanActivity.getViewBinding().viewFinderWindow.getTop()));
return true;
}
private final void setupViewFinderConstraints() {
DisplayMetrics displayMetrics = Resources.getSystem().getDisplayMetrics();
Size size = new Size(displayMetrics.widthPixels, displayMetrics.heightPixels);
int b = Vk.c.b(ViewExtensionsKt.getFloatResource(this, R.dimen.stripeViewFinderMargin) * Math.min(size.getWidth(), size.getHeight()));
Iterator it = t.i(new View[]{getViewBinding().viewFinderWindow, getViewBinding().viewFinderBorder}).iterator();
while (it.hasNext()) {
ViewGroup.LayoutParams layoutParams = ((View) it.next()).getLayoutParams();
if (layoutParams == null) {
throw new NullPointerException("null cannot be cast to non-null type android.view.ViewGroup.MarginLayoutParams");
}
((ViewGroup.MarginLayoutParams) layoutParams).setMargins(b, b, b, b);
}
ViewFinderBackground viewFinderBackground = getViewBinding().viewFinderBackground;
View view = getViewBinding().viewFinderWindow;
Intrinsics.checkNotNullExpressionValue(view, "viewBinding.viewFinderWindow");
viewFinderBackground.setViewFinderRect(com.stripe.android.camera.scanui.util.ViewExtensionsKt.asRect(view));
}
@Override
public void closeScanner() {
String stripePublishableKey = getParams().getStripePublishableKey();
Stats stats = Stats.INSTANCE;
StripeApi.uploadScanStatsOCR(stripePublishableKey, stats.getInstanceId(), stats.getScanId(), Device.Companion.fromContext(this), AppDetails.Companion.fromContext(this), ScanStatistics.Companion.fromStats(), new ScanConfig(0));
super.closeScanner();
}
@Override
@NotNull
public Size getMinimumAnalysisResolution() {
return this.minimumAnalysisResolution;
}
@Override
@NotNull
public ViewGroup getPreviewFrame() {
Object value = this.previewFrame$delegate.getValue();
Intrinsics.checkNotNullExpressionValue(value, "<get-previewFrame>(...)");
return (ViewGroup) value;
}
@Override
@NotNull
public ScanErrorListener getScanErrorListener() {
return this.scanErrorListener;
}
@Override
public void onBackPressed() {
g.d(new CardScanActivity$onBackPressed$1(this, null));
getResultListener$stripecardscan_release().userCanceled(CancellationReason.Back.INSTANCE);
closeScanner();
}
@Override
public void onCameraReady() {
ViewFinderBackground viewFinderBackground = getViewBinding().viewFinderBackground;
View view = getViewBinding().viewFinderWindow;
Intrinsics.checkNotNullExpressionValue(view, "viewBinding.viewFinderWindow");
viewFinderBackground.setViewFinderRect(com.stripe.android.camera.scanui.util.ViewExtensionsKt.asRect(view));
startCameraAdapter();
}
@Override
public Object onCameraStreamAvailable(@NotNull gl.f<CameraPreviewImage<Bitmap>> fVar, @NotNull Kk.c<? super Unit> cVar) {
CardScanFlow scanFlow = getScanFlow();
View view = getViewBinding().viewFinderWindow;
Intrinsics.checkNotNullExpressionValue(view, "viewBinding.viewFinderWindow");
scanFlow.startFlow2((Context) this, fVar, com.stripe.android.camera.scanui.util.ViewExtensionsKt.asRect(view), (I) this, (H) this, (Unit) null);
return Unit.a;
}
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
setContentView(getViewBinding().getRoot());
if (ensureValidParams()) {
setupViewFinderConstraints();
final int i = 0;
getViewBinding().closeButton.setOnClickListener(new View.OnClickListener() {
@Override
public final void onClick(View view) {
switch (i) {
case 0:
CardScanActivity.m847onCreate$lambda0((CardScanActivity) this, view);
break;
default:
Q q = (Q) this;
Intrinsics.checkNotNullParameter(q, "this$0");
q.S0();
com.crafto.android.usa.ui.base.a.j0(q, "Click Action", "Membership Status", (String) null, (String) null, "Downlaod Receipt", 0, (HashMap) null, 1004);
break;
}
}
});
getViewBinding().torchButton.setOnClickListener(new View.OnClickListener() {
@Override
public final void onClick(View view) {
CardScanActivity.m848onCreate$lambda1(CardScanActivity.this, view);
}
});
getViewBinding().swapCameraButton.setOnClickListener(new f3(this, 2));
getViewBinding().viewFinderBorder.setOnTouchListener(new View.OnTouchListener() {
@Override
public final boolean onTouch(View view, MotionEvent motionEvent) {
boolean m850onCreate$lambda3;
m850onCreate$lambda3 = CardScanActivity.m850onCreate$lambda3(CardScanActivity.this, view, motionEvent);
return m850onCreate$lambda3;
}
});
CardScanState scanState = getScanState();
if (scanState == null) {
throw new IllegalArgumentException("Required value was null.".toString());
}
displayState(scanState, getScanStatePrevious());
}
}
public void onDestroy() {
getScanFlow().cancelFlow();
super.onDestroy();
}
@Override
public void onFlashSupported(boolean z) {
ImageView imageView = getViewBinding().torchButton;
Intrinsics.checkNotNullExpressionValue(imageView, "viewBinding.torchButton");
ViewExtensionsKt.setVisible(imageView, z);
}
@Override
public void onFlashlightStateChanged(boolean z) {
if (z) {
ImageView imageView = getViewBinding().torchButton;
Intrinsics.checkNotNullExpressionValue(imageView, "viewBinding.torchButton");
com.stripe.android.camera.scanui.util.ViewExtensionsKt.setDrawable(imageView, R.drawable.stripe_flash_on_dark);
} else {
ImageView imageView2 = getViewBinding().torchButton;
Intrinsics.checkNotNullExpressionValue(imageView2, "viewBinding.torchButton");
com.stripe.android.camera.scanui.util.ViewExtensionsKt.setDrawable(imageView2, R.drawable.stripe_flash_off_dark);
}
}
@Override
public void onResume() {
super.onResume();
setScanState((CardScanState) CardScanState.NotFound.INSTANCE);
}
@Override
public void onSupportsMultipleCameras(boolean z) {
ImageView imageView = getViewBinding().swapCameraButton;
Intrinsics.checkNotNullExpressionValue(imageView, "viewBinding.swapCameraButton");
ViewExtensionsKt.setVisible(imageView, z);
}
@Override
public boolean changeScanState(@NotNull CardScanState cardScanState) {
return SimpleScanStateful.DefaultImpls.changeScanState(this, cardScanState);
}
@Override
public void displayState(@NotNull CardScanState cardScanState, CardScanState cardScanState2) {
Intrinsics.checkNotNullParameter(cardScanState, "newState");
if (cardScanState instanceof CardScanState.NotFound) {
getViewBinding().viewFinderBackground.setBackgroundColor(ViewExtensionsKt.getColorByRes(this, R.color.stripeNotFoundBackground));
getViewBinding().viewFinderWindow.setBackgroundResource(R.drawable.stripe_card_background_not_found);
ImageView imageView = getViewBinding().viewFinderBorder;
Intrinsics.checkNotNullExpressionValue(imageView, "viewBinding.viewFinderBorder");
com.stripe.android.camera.scanui.util.ViewExtensionsKt.startAnimation(imageView, R.drawable.stripe_card_border_not_found);
getViewBinding().instructions.setText(R.string.stripe_card_scan_instructions);
return;
}
if (cardScanState instanceof CardScanState.Found) {
getViewBinding().viewFinderBackground.setBackgroundColor(ViewExtensionsKt.getColorByRes(this, R.color.stripeFoundBackground));
getViewBinding().viewFinderWindow.setBackgroundResource(R.drawable.stripe_card_background_found);
ImageView imageView2 = getViewBinding().viewFinderBorder;
Intrinsics.checkNotNullExpressionValue(imageView2, "viewBinding.viewFinderBorder");
com.stripe.android.camera.scanui.util.ViewExtensionsKt.startAnimation(imageView2, R.drawable.stripe_card_border_found);
getViewBinding().instructions.setText(R.string.stripe_card_scan_instructions);
TextView textView = getViewBinding().instructions;
Intrinsics.checkNotNullExpressionValue(textView, "viewBinding.instructions");
ViewExtensionsKt.show(textView);
return;
}
if (cardScanState instanceof CardScanState.Correct) {
getViewBinding().viewFinderBackground.setBackgroundColor(ViewExtensionsKt.getColorByRes(this, R.color.stripeCorrectBackground));
getViewBinding().viewFinderWindow.setBackgroundResource(R.drawable.stripe_card_background_correct);
ImageView imageView3 = getViewBinding().viewFinderBorder;
Intrinsics.checkNotNullExpressionValue(imageView3, "viewBinding.viewFinderBorder");
com.stripe.android.camera.scanui.util.ViewExtensionsKt.startAnimation(imageView3, R.drawable.stripe_card_border_correct);
TextView textView2 = getViewBinding().instructions;
Intrinsics.checkNotNullExpressionValue(textView2, "viewBinding.instructions");
ViewExtensionsKt.hide(textView2);
}
}
@Override
@NotNull
public CardScanResultListener getResultListener$stripecardscan_release() {
return this.resultListener;
}
@Override
public CardScanState getScanState() {
return this.scanState;
}
@Override
public CardScanState getScanStatePrevious() {
return this.scanStatePrevious;
}
@Override
public void setScanState(CardScanState cardScanState) {
this.scanState = cardScanState;
}
@Override
public void setScanStatePrevious(CardScanState cardScanState) {
this.scanStatePrevious = cardScanState;
}
}