导航菜单

页面标题

页面副标题

Credmex v3.12.2 - IdCardScanActivity.java 源代码

正在查看: Credmex v3.12.2 应用的 IdCardScanActivity.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package com.credmex.activity;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.SurfaceTexture;
import android.hardware.Camera;
import android.os.AsyncTask;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.TextureView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.constraintlayout.widget.Group;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.Insets;
import androidx.core.view.OnApplyWindowInsetsListener;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import butterknife.BindView;
import butterknife.OnClick;
import com.airbnb.lottie.LottieAnimationView;
import com.airbnb.lottie.LottieDrawable;
import com.credmex.commom.CommonActivity;
import com.credmex.models.event.CardScanResultEvent;
import com.credmex.track.ThirdPartTrackEvents;
import com.credmex.track.ThirdPartTrackLib;
import com.credmex.track.TrackEventParamsConfigurator;
import com.credmex.utils.AppUtil;
import com.credmex.utils.ICamera;
import com.credmex.utils.UploadIdCardImageHelper;
import com.credmex.widght.IdCardDetector.IdCardIndicator;
import com.credmex.widght.dialog.CommonDialog;
import com.google.android.gms.fido.fido2.api.common.UserVerificationMethods;
import com.veda.android.bananalibrary.infrastructure.Logger;
import com.veda.supertoolkit.Action;
import com.veda.supertoolkit.appstatus.AppStatusListener;
import com.veda.supertoolkit.customtools.CrashReporter;
import com.veda.supertoolkit.filetools.FilePathUtil;
import com.veda.supertoolkit.imagetools.BitmapUtil;
import com.veda.supertoolkit.lifecycle.LifecycleEvent;
import com.veda.supertoolkit.phonetools.ScreenUtils;
import com.veda.supertoolkit.rxjavatools.RxUtil;
import com.veda.supertoolkit.utils.ImageUtil;
import com.veda.supertoolkit.utils.ViewUtil;
import com.veda.supertoolkit.widgets.BaseUtils;
import dagger.android.AndroidInjection;
import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function;
import io.reactivex.functions.Predicate;
import io.reactivex.schedulers.Schedulers;
import io.sentry.ISpan;
import io.sentry.ITransaction;
import io.sentry.Sentry;
import io.sentry.SpanStatus;
import java.io.File;
import java.util.Map;
import org.greenrobot.eventbus.EventBus;

public class IdCardScanActivity extends CommonActivity implements TextureView.SurfaceTextureListener {
    private Bitmap E;
    private String F;
    private int G;
    private UploadIdCardImageHelper H;
    private LottieDrawable I;
    private Disposable J;
    private byte[] K;
    private ICamera R;
    private ISpan T;

    @BindView(2131362035)
    ConstraintLayout clContent;

    @BindView(2131362247)
    Group gpCameraPicture;

    @BindView(2131362248)
    Group gpCameraPreview;

    @BindView(2131362281)
    IdCardIndicator iICameraFrame;

    @BindView(2131362312)
    LottieAnimationView ivCamera;

    @BindView(2131362320)
    ImageView ivClose;

    @BindView(2131362392)
    View ivRescanOk;

    @BindView(2131362393)
    View ivRescanReset;

    @BindView(2131363007)
    TextView tvCameraTip;

    @BindView(2131362965)
    TextureView tvSurface;

    @NonNull
    private final ITransaction D = Sentry.D("ScanIDCardTransaction", "scanIdCard");
    private final OpenCameraTask S = new OpenCameraTask();

    class AnonymousClass1 implements UploadIdCardImageHelper.Callback {
        AnonymousClass1() {
        }

        @Override
        public void a(final String str, String str2) {
            ThirdPartTrackLib.e(IdCardScanActivity.this, ThirdPartTrackEvents.UserAuth.MEX_ID_CARD_SCAN_UPLOAD_ID_CARD, new TrackEventParamsConfigurator() {
                @Override
                public final void a(Map map) {
                    map.put(ThirdPartTrackEvents.UserAuth.Keys.IMAGE_KEY, str);
                }
            });
            IdCardScanActivity.this.M0(str);
        }

        @Override
        public void b(final String str) {
            ThirdPartTrackLib.e(IdCardScanActivity.this, ThirdPartTrackEvents.UserAuth.MEX_ID_CARD_SCAN_UPLOAD_ID_CARD, new TrackEventParamsConfigurator() {
                @Override
                public final void a(Map map) {
                    map.put(ThirdPartTrackEvents.Keys.ERROR_MESSAGE, str);
                }
            });
            IdCardScanActivity.this.L0(str);
        }
    }

    private class OpenCameraTask extends AsyncTask<Integer, Integer, Camera> {
        @Override
        public Camera doInBackground(Integer... numArr) {
            ISpan x = IdCardScanActivity.this.D.x("openCamera", "openCamera");
            ThirdPartTrackLib.d(IdCardScanActivity.this, ThirdPartTrackEvents.UserAuth.MEX_ID_CARD_SCAN_OPEN_CAMERA);
            Camera j2 = IdCardScanActivity.this.R.j();
            if (j2 == null) {
                IdCardScanActivity.this.D.a("errorStep", "openCamera");
                IdCardScanActivity.this.D.a("openCamera", SpanStatus.UNKNOWN.name());
                x.n(SpanStatus.UNKNOWN_ERROR);
            } else {
                ITransaction iTransaction = IdCardScanActivity.this.D;
                SpanStatus spanStatus = SpanStatus.OK;
                iTransaction.a("openCamera", spanStatus.name());
                x.n(spanStatus);
            }
            return j2;
        }

        @Override
        public void onPostExecute(Camera camera) {
            super.onPostExecute(camera);
            if (camera == null) {
                IdCardScanActivity.this.showErrorToast(2131821073);
                return;
            }
            IdCardScanActivity.this.R.g(IdCardScanActivity.this);
            ThirdPartTrackLib.d(IdCardScanActivity.this, ThirdPartTrackEvents.UserAuth.MEX_ID_CARD_SCAN_INIT_CAMERA_PARAMS);
            FrameLayout.LayoutParams layoutParams = (FrameLayout.LayoutParams) IdCardScanActivity.this.R.e(IdCardScanActivity.this.clContent.getLayoutParams());
            layoutParams.gravity = 17;
            IdCardScanActivity.this.clContent.setLayoutParams(layoutParams);
            IdCardScanActivity.this.w0();
        }

        private OpenCameraTask() {
        }
    }

    private interface ScanIdCardSentry {
    }

    public void A0(Map map) {
        map.put(ThirdPartTrackEvents.UserAuth.Keys.FILE_PATH, this.F);
    }

    public File B0(ISpan iSpan, Bitmap bitmap) throws Exception {
        this.F = ImageUtil.k(BitmapUtil.d(bitmap, this.iICameraFrame.getContentWidth() / this.iICameraFrame.getWidth(), this.iICameraFrame.getContentHeight() / this.iICameraFrame.getHeight()), new File(FilePathUtil.f(this), "cardScanImage"));
        File file = new File(this.F);
        if (file.exists()) {
            iSpan.n(SpanStatus.OK);
            ThirdPartTrackLib.e(this, ThirdPartTrackEvents.UserAuth.MEX_ID_CARD_SCAN_CACHE_FILE_PATH, new TrackEventParamsConfigurator() {
                @Override
                public final void a(Map map) {
                    IdCardScanActivity.this.A0(map);
                }
            });
            return file;
        }
        iSpan.n(SpanStatus.UNKNOWN_ERROR);
        this.D.a("errorStep", "cacheIdCard");
        throw new Exception(getResources().getString(2131821076));
    }

    public void C0(Map map) {
        map.put(ThirdPartTrackEvents.UserAuth.Keys.FILE_PATH, this.F);
    }

    public void E0(Boolean bool) throws Exception {
        this.D.a("goBackground", "true");
    }

    public void F0() {
        ViewUtil.b(this.ivClose, ScreenUtils.a(10));
    }

    public void G0(Map map) {
        map.put(ThirdPartTrackEvents.UserAuth.Keys.FILE_PATH, this.F);
    }

    public void H0(ISpan iSpan, byte[] bArr, Camera camera) {
        SpanStatus spanStatus = SpanStatus.OK;
        iSpan.n(spanStatus);
        this.D.a("takePicture", spanStatus.name());
        Logger.c().b("onPictureTaken2");
        K0(bArr);
    }

    public void I0(ISpan iSpan, Throwable th) {
        Sentry.h(th);
        iSpan.m(th);
        iSpan.n(SpanStatus.UNKNOWN_ERROR);
        this.D.a("takePicture", SpanStatus.UNKNOWN.name());
        this.D.a("errorStep", "takePicture");
    }

    private void J0() {
        u0();
        this.tvCameraTip.setText("");
        this.ivCamera.setEnabled(true);
        this.ivCamera.setImageDrawable(ContextCompat.getDrawable(this, 2131230913));
        try {
            Bitmap bitmap = this.E;
            if (bitmap == null || bitmap.isRecycled()) {
                return;
            }
            this.E.recycle();
            this.E = null;
        } catch (Exception unused) {
        }
    }

    private void K0(byte[] bArr) {
        ISpan x = this.D.x("decodeBitmap", "decodeBitmap");
        this.K = bArr;
        Bitmap f = BitmapUtil.f(1000, bArr);
        if (f == null) {
            showNormalToast(2131821073);
            w0();
            x.n(SpanStatus.UNKNOWN_ERROR);
            this.D.a("decodeBitmap", SpanStatus.UNKNOWN.name());
            this.D.a("errorStep", "decodeBitmap");
            return;
        }
        ITransaction iTransaction = this.D;
        SpanStatus spanStatus = SpanStatus.OK;
        iTransaction.a("decodeBitmap", spanStatus.name());
        x.n(spanStatus);
        this.E = f;
        Q0();
        ThirdPartTrackLib.d(this, ThirdPartTrackEvents.UserAuth.MEX_ID_CARD_SCAN_TAKE_PHOTO);
    }

    public void L0(String str) {
        ISpan iSpan = this.T;
        if (iSpan != null) {
            iSpan.n(SpanStatus.UNKNOWN_ERROR);
        }
        this.D.a("errorStep", "uploadIdCard");
        dismissLoadingDialog();
        w0();
        R0();
        P0(str);
    }

    public void M0(String str) {
        ISpan iSpan = this.T;
        if (iSpan != null) {
            iSpan.n(SpanStatus.OK);
        }
        v0(SpanStatus.OK, "uploadIdCard");
        dismissLoadingDialog();
        EventBus.c().n(new CardScanResultEvent(true, this.G, this.F, str));
        finish();
    }

    public void N0(File file) {
        if (file != null && file.exists()) {
            O0();
        } else {
            showNormalToast(2131821100);
            w0();
        }
    }

    private void O0() {
        if (this.H == null) {
            x0();
        }
        showLoadingDialog();
        this.T = this.D.x("uploadIdCard", "uploadIdCard");
        this.H.f(this.K);
    }

    private void P0(String str) {
        if (!AppUtil.c(this) || TextUtils.isEmpty(str)) {
            return;
        }
        CommonDialog.CommonDialogBuilder.c(this).q("dialog_error_tip").j(str).m(2131820685, new b()).d(1).a().show();
    }

    private void Q0() {
        this.gpCameraPreview.setVisibility(8);
        this.gpCameraPicture.setVisibility(0);
    }

    private void R0() {
        this.gpCameraPreview.setVisibility(0);
        this.gpCameraPicture.setVisibility(8);
        J0();
    }

    private void S0() {
        final ISpan x = this.D.x("takePicture", "takePicture");
        this.R.m(new Camera.PictureCallback() {
            @Override
            public final void onPictureTaken(byte[] bArr, Camera camera) {
                IdCardScanActivity.this.H0(x, bArr, camera);
            }
        }, new Action() {
            public final void a(Object obj) {
                IdCardScanActivity.this.I0(x, (Throwable) obj);
            }
        });
    }

    private void s0() {
        ViewCompat.setOnApplyWindowInsetsListener(this.clContent, new OnApplyWindowInsetsListener() {
            public final WindowInsetsCompat onApplyWindowInsets(View view, WindowInsetsCompat windowInsetsCompat) {
                WindowInsetsCompat y0;
                y0 = IdCardScanActivity.this.y0(view, windowInsetsCompat);
                return y0;
            }
        });
    }

    public static void startIdCardScanActivity(Activity activity, int i2) {
        Intent intent = new Intent(activity, (Class<?>) IdCardScanActivity.class);
        intent.putExtra("card_type", i2);
        activity.startActivity(intent);
    }

    private void t0(Bitmap bitmap) {
        if (bitmap != null) {
            final ISpan x = this.D.x("cacheIdCard", "cacheIdCard");
            this.J = Flowable.G(bitmap).b0(Schedulers.c()).H(new Function() {
                public final Object apply(Object obj) {
                    File B0;
                    B0 = IdCardScanActivity.this.B0(x, (Bitmap) obj);
                    return B0;
                }
            }).J(AndroidSchedulers.a()).W(new Consumer() {
                public final void accept(Object obj) {
                    IdCardScanActivity.this.N0((File) obj);
                }
            }, new Consumer() {
                public final void accept(Object obj) {
                    IdCardScanActivity.this.z0((Throwable) obj);
                }
            });
        } else {
            showNormalToast(2131820721);
            w0();
            R0();
        }
    }

    private void u0() {
        LottieDrawable drawable = this.ivCamera.getDrawable();
        if (drawable instanceof LottieDrawable) {
            this.I = drawable;
        }
    }

    private void v0(SpanStatus spanStatus, String str) {
        if (this.D.isFinished()) {
            return;
        }
        this.D.a("userCloseAction", str);
        this.D.a("scanIdCard", spanStatus.name());
        this.D.n(spanStatus);
    }

    public void w0() {
        this.R.l(this.tvSurface.getSurfaceTexture());
        ThirdPartTrackLib.e(this, ThirdPartTrackEvents.UserAuth.MEX_ID_CARD_SCAN_START_PREVIEW, new TrackEventParamsConfigurator() {
            @Override
            public final void a(Map map) {
                IdCardScanActivity.this.C0(map);
            }
        });
    }

    private void x0() {
        this.H = new UploadIdCardImageHelper(this, new AnonymousClass1(), this.G);
    }

    public WindowInsetsCompat y0(View view, WindowInsetsCompat windowInsetsCompat) {
        Insets insets = windowInsetsCompat.getInsets(WindowInsetsCompat.Type.systemBars());
        ViewGroup.MarginLayoutParams marginLayoutParams = (ViewGroup.MarginLayoutParams) this.ivCamera.getLayoutParams();
        marginLayoutParams.setMargins(marginLayoutParams.leftMargin, marginLayoutParams.topMargin, getResources().getDimensionPixelOffset(2131165594) + insets.right, marginLayoutParams.bottomMargin);
        this.ivCamera.setLayoutParams(marginLayoutParams);
        ViewGroup.MarginLayoutParams marginLayoutParams2 = (ViewGroup.MarginLayoutParams) this.ivRescanOk.getLayoutParams();
        marginLayoutParams2.setMargins(marginLayoutParams2.leftMargin, marginLayoutParams2.topMargin, getResources().getDimensionPixelOffset(2131165594) + insets.right, marginLayoutParams2.bottomMargin);
        this.ivRescanOk.setLayoutParams(marginLayoutParams2);
        return WindowInsetsCompat.CONSUMED;
    }

    public void z0(Throwable th) throws Exception {
        L0(th.getMessage());
    }

    @Override
    protected void D() {
        J0();
        reportFullyDisplayed();
    }

    @Override
    protected void G(@NonNull Bundle bundle) {
        super.G(bundle);
        this.G = getIntent().getIntExtra("card_type", 1);
    }

    @Override
    protected void K() {
        IdCardIndicator.IDCardAttr iDCardAttr = new IdCardIndicator.IDCardAttr();
        int i2 = this.G;
        if (i2 == 1 || i2 == 4) {
            iDCardAttr.a = 0;
            this.iICameraFrame.f(false, iDCardAttr);
            this.iICameraFrame.setIdCardRes(2131231061);
        } else {
            iDCardAttr.a = 1;
            this.iICameraFrame.f(false, iDCardAttr);
            this.iICameraFrame.setIdCardRes(2131231060);
        }
        this.tvSurface.setSurfaceTextureListener(this);
        this.ivClose.post(new Runnable() {
            @Override
            public final void run() {
                IdCardScanActivity.this.F0();
            }
        });
    }

    @Override
    protected boolean L() {
        return true;
    }

    @Override
    protected void X(@NonNull Bundle bundle) {
        super.X(bundle);
        bundle.putInt("card_type", this.G);
    }

    @Override
    public int getLayoutID() {
        return 2131558639;
    }

    @Override
    @SuppressLint({"CheckResult"})
    protected void init() {
        super.init();
        this.R = new ICamera(false);
        duringActive(AppStatusListener.h().k(), false).x(new Predicate() {
            public final boolean test(Object obj) {
                boolean booleanValue;
                booleanValue = ((Boolean) obj).booleanValue();
                return booleanValue;
            }
        }).e0(1L).W(new Consumer() {
            public final void accept(Object obj) {
                IdCardScanActivity.this.E0((Boolean) obj);
            }
        }, new y0());
    }

    public void onBackPressed() {
        super/*androidx.activity.ComponentActivity*/.onBackPressed();
        v0(SpanStatus.CANCELLED, "backPressed");
    }

    @Override
    protected void onCreate(Bundle bundle) {
        getWindow().setFlags(UserVerificationMethods.USER_VERIFY_ALL, UserVerificationMethods.USER_VERIFY_ALL);
        super.onCreate(bundle);
        AndroidInjection.b(this);
        ThirdPartTrackLib.d(this, ThirdPartTrackEvents.UserAuth.MEX_ID_CARD_SCAN_ON_CREATE);
        s0();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        this.R.c();
        ThirdPartTrackLib.d(this, ThirdPartTrackEvents.UserAuth.MEX_ID_CARD_SCAN_RELEASE_CAMERA);
        this.S.cancel(true);
        LottieAnimationView lottieAnimationView = this.ivCamera;
        if (lottieAnimationView != null && lottieAnimationView.o()) {
            this.ivCamera.h();
        }
        Bitmap bitmap = this.E;
        if (bitmap != null && !bitmap.isRecycled()) {
            this.E.recycle();
            this.E = null;
        }
        ThirdPartTrackLib.d(this, ThirdPartTrackEvents.UserAuth.MEX_ID_CARD_SCAN_DESTROY);
        if (AppStatusListener.h().j()) {
            v0(SpanStatus.CANCELLED, "goBackground");
        } else {
            SpanStatus spanStatus = SpanStatus.UNKNOWN_ERROR;
            v0(spanStatus, spanStatus.name());
        }
    }

    @Override
    protected void onPause() {
        super.onPause();
        this.tvSurface.setKeepScreenOn(false);
        RxUtil.b(this.J);
    }

    @Override
    protected void onResume() {
        super.onResume();
        this.tvSurface.setVisibility(0);
        this.tvSurface.setKeepScreenOn(true);
    }

    @Override
    public void onSurfaceTextureAvailable(SurfaceTexture surfaceTexture, int i2, int i3) {
        ThirdPartTrackLib.e(this, ThirdPartTrackEvents.UserAuth.MEX_ID_CARD_SCAN_SURFACE_TEXTURE_AVAILABLE, new TrackEventParamsConfigurator() {
            @Override
            public final void a(Map map) {
                IdCardScanActivity.this.G0(map);
            }
        });
        try {
            this.S.execute(new Integer[0]);
        } catch (Exception e) {
            e.printStackTrace();
            CrashReporter.a(e);
        }
    }

    @Override
    public boolean onSurfaceTextureDestroyed(SurfaceTexture surfaceTexture) {
        ThirdPartTrackLib.d(this, ThirdPartTrackEvents.UserAuth.MEX_ID_CARD_SCAN_SURFACE_TEXTURE_DESTROYED);
        this.R.c();
        ThirdPartTrackLib.d(this, ThirdPartTrackEvents.UserAuth.MEX_ID_CARD_SCAN_RELEASE_CAMERA);
        return true;
    }

    @OnClick({2131362965, 2131362281, 2131362312, 2131362320})
    public void onViewClicked(View view) {
        if (BaseUtils.b()) {
        }
        switch (view.getId()) {
            case 2131362281:
            case 2131362965:
                this.R.b();
                break;
            case 2131362312:
                S0();
                break;
            case 2131362320:
                v0(SpanStatus.CANCELLED, "closeIconClick");
                EventBus.c().n(new CardScanResultEvent(false, this.G));
                finish();
                break;
        }
    }

    @OnClick({2131362393, 2131362392})
    protected void rescanViewClick(View view) {
        switch (view.getId()) {
            case 2131362392:
                t0(this.E);
                break;
            case 2131362393:
                w0();
                R0();
                break;
        }
    }

    @Override
    @SuppressLint({"CheckResult"})
    public Disposable runOnCreated(@NonNull Runnable runnable) {
        return com.veda.supertoolkit.lifecycle.i.a(this, runnable);
    }

    @Override
    @SuppressLint({"CheckResult"})
    public Disposable runOnDestroy(@NonNull Runnable runnable) {
        return com.veda.supertoolkit.lifecycle.i.b(this, runnable);
    }

    @Override
    @SuppressLint({"CheckResult"})
    public Disposable runOnEvent(@NonNull LifecycleEvent lifecycleEvent, @Nullable Runnable runnable) {
        return com.veda.supertoolkit.lifecycle.i.c(this, lifecycleEvent, runnable);
    }

    @Override
    public void onSurfaceTextureUpdated(SurfaceTexture surfaceTexture) {
    }

    @Override
    public void onSurfaceTextureSizeChanged(SurfaceTexture surfaceTexture, int i2, int i3) {
    }
}