QR码阅读器提取数据

时间:2017-03-27 02:03:58

标签: android ios qr-code

我打印出销售摘要并且有QR码, 我想开发一个应用程序(IOS和android)来读取QR码,提取所有信息,做一些计算,并以特定的形式显示,我尝试了zxing库,但它没有从收据中提取所有信息。任何提示?< / p>

2 个答案:

答案 0 :(得分:0)

This library是您在Android应用中阅读QR码最受欢迎和最简单的方法 您还应该查看此库的Wiki部分,了解如何将此库集成到Android应用程序以及如何使用此库。

这就是你如何使用这个库 1.将以下行添加到您的dependencies build.gradle(模块:应用)文件中,将此库添加到您的项目中 compile 'com.github.nisrulz:qreader:2.0.0'
2.然后,在同步项目文件后,将此库提供的SurfaceView元素添加到 XML 布局文件中。

<SurfaceView
  android:id="@+id/camera_view"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  />


3.声明SurfaceView&amp;您的活动 Java 文件中的QREader&amp;然后在onCreate()方法中初始化它。

class MainActivity extends AppCompatActivity{
    private SurfaceView mySurfaceView;
    private QREader qrEader;

    @Override
    protected void onCreate(final Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // Setup SurfaceView
    // -----------------
    mySurfaceView = (SurfaceView) findViewById(R.id.camera_view);

    // Init QREader
    // ------------
    qrEader = new QREader.Builder(this, mySurfaceView, new QRDataListener() {
      @Override
      public void onDetected(final String data) {
        Log.d("QREader", "Value : " + data);
        text.post(new Runnable() {
          @Override
          public void run() {
            text.setText(data);
          }
        });
      }
    }).facing(QREader.BACK_CAM)
        .enableAutofocus(true)
        .height(mySurfaceView.getHeight())
        .width(mySurfaceView.getWidth())
        .build();

  }


4.在onResume()

中初始化它
  @Override
  protected void onResume() {
    super.onResume();

    // Init and Start with SurfaceView
    // -------------------------------
    qrEader.initAndStart(mySurfaceView);
  }


您可以使用此库进行更多可能性,因此我建议您访问GitHub存储库并查看它。值得一试!

答案 1 :(得分:0)

您可以使用google vision API来实现此目的。我个人用过这个,觉得很棒。以下代码片段可以为您提供帮助。

将以下内容放入gradle中。

compile 'com.google.android.gms:play-services:9.4.0'

使用BarcodeDetectorCameraSource类实时捕获QR码并对其进行解码。

barcodeDetector.setProcessor(new Detector.Processor<Barcode>() {
            @Override
            public void release() {
            }

            @Override
            public void receiveDetections(Detector.Detections<Barcode> detections) {
                final SparseArray<Barcode> barcodes = detections.getDetectedItems();

                if (barcodes.size() != 0) {
                    barcodeInfo.post(new Runnable() {    // Use the post method of the TextView
                        public void run() {
                            barcodeInfo.setText(    // Update the TextView
                                    barcodes.valueAt(0).displayValue
                            );
                        }
                    });
                }
            }
        });

使用SparseArray获取检测结果,此稀疏数组的displayValue元素返回deocded字符串。

提取字符串后,可以执行任何操作,无论是显示字符串还是从中进行计算等。