导航菜单

页面标题

页面副标题

Harvest v2.32 - QrCodeScannerActivity.java 源代码

正在查看: Harvest v2.32 应用的 QrCodeScannerActivity.java JAVA 源代码文件

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


package com.ufields.tracking;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.SparseArray;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.AppCompatImageView;
import androidx.core.app.ActivityCompat;
import butterknife.BindView;
import butterknife.ButterKnife;
import com.google.android.gms.vision.CameraSource;
import com.google.android.gms.vision.Detector;
import com.google.android.gms.vision.barcode.Barcode;
import com.google.android.gms.vision.barcode.BarcodeDetector;
import com.itextpdf.xmp.XMPError;
import com.ufields.tracking.Helper.Constants;

public class QrCodeScannerActivity extends AppCompatActivity {

    @BindView(R.id.ivBack)
    AppCompatImageView backBtn;
    private BarcodeDetector barcodeDetector;
    private CameraSource cameraSource;
    private Context ctx;

    @BindView(R.id.surfaceView)
    SurfaceView scannerSurfaceView;
    private int REQUEST_CAMERA_PERMISSION = XMPError.BADXML;
    private Boolean hitQRCodeDataApi = true;

    protected void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        this.ctx = this;
        setContentView(R.layout.activity_qr_code_scanner);
        ButterKnife.bind(this);
        initOnClickListener();
        initialiseDetectorsAndSources();
        try {
            if (ActivityCompat.checkSelfPermission(this, "android.permission.CAMERA") == 0) {
                this.cameraSource.start(this.scannerSurfaceView.getHolder());
            } else {
                ActivityCompat.requestPermissions(this, new String[]{"android.permission.CAMERA"}, this.REQUEST_CAMERA_PERMISSION);
            }
        } catch (Exception unused) {
        }
    }

    public void onRequestPermissionsResult(int i, String[] strArr, int[] iArr) {
        super.onRequestPermissionsResult(i, strArr, iArr);
        if (i == this.REQUEST_CAMERA_PERMISSION) {
            if (iArr[0] == 0) {
                initialiseDetectorsAndSources();
                try {
                    this.cameraSource.start(this.scannerSurfaceView.getHolder());
                } catch (Exception unused) {
                }
            } else {
                Toast.makeText((Context) this, (CharSequence) getString(R.string.cameraPermissionDenied), 1).show();
                finish();
            }
        }
    }

    private void initialiseDetectorsAndSources() {
        this.barcodeDetector = new BarcodeDetector.Builder(this).setBarcodeFormats(0).build();
        this.cameraSource = new CameraSource.Builder(this, this.barcodeDetector).setRequestedPreviewSize(1920, 1080).setAutoFocusEnabled(true).build();
        this.scannerSurfaceView.getHolder().addCallback(new SurfaceHolder.Callback() {
            @Override
            public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i2, int i3) {
            }

            @Override
            public void surfaceCreated(SurfaceHolder surfaceHolder) {
                try {
                    if (ActivityCompat.checkSelfPermission(QrCodeScannerActivity.this, "android.permission.CAMERA") == 0) {
                        QrCodeScannerActivity.this.cameraSource.start(QrCodeScannerActivity.this.scannerSurfaceView.getHolder());
                    } else {
                        ?? r0 = QrCodeScannerActivity.this;
                        ActivityCompat.requestPermissions((Activity) r0, new String[]{"android.permission.CAMERA"}, ((QrCodeScannerActivity) r0).REQUEST_CAMERA_PERMISSION);
                    }
                } catch (Exception unused) {
                }
            }

            @Override
            public void surfaceDestroyed(SurfaceHolder surfaceHolder) {
                QrCodeScannerActivity.this.cameraSource.stop();
            }
        });
        this.barcodeDetector.setProcessor(new Detector.Processor<Barcode>() {
            public void release() {
            }

            public void receiveDetections(Detector.Detections<Barcode> detections) {
                SparseArray detectedItems = detections.getDetectedItems();
                StringBuilder sb = new StringBuilder();
                if (detectedItems.size() != 0) {
                    sb.append(((Barcode) detectedItems.valueAt(0)).rawValue);
                    if (QrCodeScannerActivity.this.hitQRCodeDataApi.booleanValue()) {
                        QrCodeScannerActivity.this.hitQRCodeDataApi = false;
                        QrCodeScannerActivity.this.sendEventBusToCallingFragment(sb.toString());
                    }
                }
            }
        });
    }

    public void sendEventBusToCallingFragment(String str) {
        Intent intent = new Intent((Context) this, (Class<?>) QrCodeScannerDetailActivity.class);
        intent.putExtra(Constants.HARVEST_ID, str);
        startActivity(intent);
        finish();
    }

    private void initOnClickListener() {
        this.backBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                QrCodeScannerActivity.this.finish();
            }
        });
    }

    protected void onPause() {
        super.onPause();
        this.cameraSource.release();
    }

    protected void onResume() {
        super.onResume();
        initialiseDetectorsAndSources();
    }
}