У меня есть приложение, которое должно сканировать и обнаруживать содержимое кода матрицы данных. Используя библиотеку 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>
Заранее благодарю за вашу помощь!