首页 > 解决方案 > 生成具有多级数据的条形码以回读到 Android 应用程序?

问题描述

我使用以下 GitHub 存储库在我的 Android 应用程序中创建了一个条形码扫描仪:https ://github.com/yuriy-budiyev/code-scanner ,效果很好。

我正在尝试生成几个条形码或 QR 码以将三个元素读回我的应用程序,这些元素与膳食有关,它们是:膳食/零食名称、卡路里和克数,以及它们的值。到目前为止,我研究过的所有条形码生成器都只允许输入一个值。我想知道是否有人可以解释如何实现这一点?在我的 XML 中,我TextViews的 id 最终将与数据库相关联,我想从条形码中获取数据并将其显示给这些TextViews.

我能够扫描代码并获取数据,但我正在努力思考如何在我的应用程序中将值设置为 ID,我已经在Lifesum等膳食跟踪应用程序中看到了这一点,代码将被扫描并且这些值将自动添加到相应的字段中。

我尝试过的一些条码生成器:

https://www.ruggedtabletpc.com/barcode-generator https://www.the-qrcode-generator.com/

这是 QR 码的想法:
在此处输入图像描述

XML

 <com.budiyev.android.codescanner.CodeScannerView
        android:id="@+id/scanner_view"
        android:layout_width="match_parent"
        android:layout_height="400dp"
        app:autoFocusButtonColor="@android:color/white"
        app:autoFocusButtonVisible="true"
        app:flashButtonColor="@android:color/white"
        app:flashButtonVisible="true"
        app:frameColor="@android:color/black"
        app:frameCornersSize="50dp"
        app:frameCornersRadius="0dp"
        app:frameAspectRatioWidth="1"
        app:frameAspectRatioHeight="1"
        app:frameSize="0.75"
        app:frameThickness="2dp"
        app:maskColor="#77000000"/>

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/scanner_view"
        android:text="Scan something.."
        android:layout_marginTop="20dp"
        android:fontFamily="sans-serif-black"
        android:gravity="center"/>

    <TextView
        android:id="@+id/grams"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/scanner_view"
        android:layout_marginStart="200dp"
        android:layout_marginTop="88dp"
        android:fontFamily="sans-serif-black"
        android:gravity="left"
        android:text="Grams" />

    <TextView
        android:id="@+id/mealName"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/scanner_view"
        android:layout_marginStart="200dp"
        android:layout_marginTop="59dp"
        android:fontFamily="sans-serif-black"
        android:gravity="left"
        android:text="Meal Name" />

    <TextView
        android:id="@+id/mealNameText"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/scanner_view"
        android:layout_marginStart="100dp"
        android:layout_marginTop="59dp"
        android:fontFamily="sans-serif-black"
        android:gravity="left"
        android:text="Meal Name:" />

    <TextView
        android:id="@+id/gramsText"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/scanner_view"
        android:layout_marginStart="100dp"
        android:layout_marginTop="88dp"
        android:fontFamily="sans-serif-black"
        android:gravity="left"
        android:text="Grams:" />

    <TextView
        android:id="@+id/calories"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/scanner_view"
        android:layout_marginStart="200dp"
        android:layout_marginTop="118dp"
        android:fontFamily="sans-serif-black"
        android:gravity="left"
        android:text="Calories" />

    <TextView
        android:id="@+id/caloriesText"
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/scanner_view"
        android:layout_marginStart="100dp"
        android:layout_marginTop="118dp"
        android:fontFamily="sans-serif-black"
        android:gravity="left"
        android:text="Calories:" />

扫描仪活动

 private CodeScanner mCodeScanner;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.scanner_view);
            CodeScannerView scannerView = findViewById(R.id.scanner_view);

            RequestCameraPermission requestCameraPermission = new RequestCameraPermission(this);
            requestCameraPermission.verifyStoragePermissions();

            mCodeScanner = new CodeScanner(this, scannerView);

            mCodeScanner.setDecodeCallback(new DecodeCallback() {
                @Override
                public void onDecoded(@NonNull final Result result) {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(ScannerView.this, result.getText(), Toast.LENGTH_SHORT).show();
                        }
                    });
                }
            });
            scannerView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    mCodeScanner.startPreview();
                }
            });
        }

        @Override
        protected void onResume() {
            super.onResume();
            mCodeScanner.startPreview();
        }

        @Override
        protected void onPause() {
            mCodeScanner.releaseResources();
            super.onPause();
        }

    private boolean checkPermission() {
        if (ContextCompat.checkSelfPermission(getApplicationContext(),
                android.Manifest.permission.CAMERA) == PackageManager.PERMISSION_GRANTED) {
            return true;
        }
        return false;
    }

标签: javaandroidfirebasebarcode-scanner

解决方案


推荐阅读