Android zxing не обнаруживает матрицу данных - PullRequest
0 голосов
/ 10 июля 2020

У меня есть приложение, которое должно сканировать и обнаруживать содержимое кода матрицы данных. Используя библиотеку zxing для Android, я почему-то не могу этого сделать! Наш клиент решил отказаться от использования QR-кодов, которые раньше работали без проблем.

Наши коды матрицы данных действительны, поскольку они работают в любом другом приложении на нашем устройстве и на других устройствах. Это оборудование не может запускать приложения через api 23, и наше приложение использует библиотеки поддержки v7: 28.0.0, а не androidx. Имеется только одна версия оборудования, и я не могу обновить эти числа. Оборудование работает только в портретном режиме. Использование zxing- android -embedded: 3.6.0.

Я просмотрел inte rnet в поисках решений, но не могу ничего придумать.

Вот мой код .

public class ManufacturingCameraDialogFragment extends DialogFragment {
    private DecoratedBarcodeView barcodeScannerView;
   

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_manufacturing_camera_code_scan, null);

        barcodeScannerView = view.findViewById(R.id.barcodeScannerView);
        List<BarcodeFormat> formats = Collections.singletonList(
                BarcodeFormat.DATA_MATRIX
        );

        barcodeScannerView.getBarcodeView().setDecoderFactory(new DefaultDecoderFactory(formats));

        CameraSettings cameraSettings = barcodeScannerView.getBarcodeView().getCameraSettings();
        if (barcodeScannerView.getBarcodeView().isPreviewActive()) {
            barcodeScannerView.pause();
        }

        barcodeScannerView.getBarcodeView().setCameraSettings(cameraSettings);

        barcodeScannerView.resume();

        barcodeScannerView.decodeContinuous(new BarcodeCallback() {
            @Override
            public void barcodeResult(BarcodeResult result) {
                if (result.getText() == null) {
                    // Prevent duplicate scans
                    return;
                }

                checkUnitId(result.getText());
            }

            @Override
            public void possibleResultPoints(List<ResultPoint> resultPoints) {

            }
        });

        return view;
    }

    @Override
    public void onResume() {
        super.onResume();
        barcodeScannerView.resume();
    }

    @Override
    public void onPause() {
        super.onPause();
        barcodeScannerView.pause();
    }

    @Override
    public void onDismiss(DialogInterface dialog) {
        super.onDismiss(dialog);
        barcodeScannerView.getBarcodeView().stopDecoding();
    }

И связанные с ним виды ...

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/scanBarcodeText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginStart="32dp"
        android:layout_marginTop="32dp"
        android:layout_marginEnd="32dp"
        android:elevation="1dp"
        android:text="Scan machine code"
        android:textSize="21sp"
        android:textAlignment="center"
        android:textColor="@android:color/white"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <com.journeyapps.barcodescanner.DecoratedBarcodeView
        android:id="@+id/barcodeScannerView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:zxing_preview_scaling_strategy="centerCrop"
        app:zxing_scanner_layout="@layout/ui_barcode_scanner"
        app:zxing_use_texture_view="false">

    </com.journeyapps.barcodescanner.DecoratedBarcodeView>

</android.support.constraint.ConstraintLayout>
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <com.journeyapps.barcodescanner.BarcodeView
        android:id="@+id/zxing_barcode_surface"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:zxing_framing_rect_height="500dp"
        app:zxing_framing_rect_width="500dp" />

    <com.journeyapps.barcodescanner.ViewfinderView
        android:id="@+id/zxing_viewfinder_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:zxing_result_view="@color/zxing_custom_result_view"
        app:zxing_viewfinder_laser="@color/zxing_custom_viewfinder_laser"
        app:zxing_viewfinder_mask="@color/zxing_custom_viewfinder_mask" />
</merge>

Заранее благодарю за вашу помощь!

...