使用 Zxing 的 Android 条码扫描器

标签 android android-intent barcode zxing barcode-scanner

我想将Zxing集成到android项目中(我是初学者)。

我已经看到这里描述的方式http://bit.ly/nBszrL不鼓励,最好的方法是通过 Intent ,如这篇文章 http://bit.ly/o29Uma 中所述。

附注:我不想在我的设备上安装条形码扫描仪

我已在我的项目中包含了所需的类:http://bit.ly/16pKMKx

my test code :

package com.example.barcodescanner;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

    private static final int REQUEST_BARCODE = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    // when my button is clicked
    public void scanBarCode(View view) {
        Intent intent = new Intent("com.google.zxing.client.android.SCAN");
        intent.putExtra("SCAN_MODE", "PRODUCT_MODE");  

        startActivityForResult(intent, REQUEST_BARCODE);

        Toast toast = Toast.makeText(this, "Start scanning Barcode", Toast.LENGTH_SHORT);
        toast.show();
    }

}

我真的不明白如何通过这种方式做到这一点:http://bit.ly/18v7K2O (我真的不明白,这就是我想用的)

你知道如何做吗?

谢谢。

最佳答案

Android 系统的构建是为了让人们可以编写能够很好地完成某项特定任务的应用程序,并且其他开发人员可以在需要时使用它们。条形码扫描就是一个很好的例子。 ZXing 是一款出色的扫描仪,并允许其他应用程序通过 Intents 使用它。基本上,您告诉操作系统您想要扫描条形码,ZXing 会说:“是的,我可以做到!”他们扫描条形码并将信息返回给您。这样做的好处是你不必担心他们什么时候更新他们的东西。用户只会收到更新的通知,然后您就可以使用最新、最好的版本。一个潜在的缺点是用户的手机上有另一个应用程序,但我并不认为这是一个缺点。为此,您实际上只需要链接到的两个文件,然后只需将其放入代码中即可开始扫描:

IntentIntegrator integrator = new IntentIntegrator(yourActivity);
integrator.initiateScan();

这部分从条形码扫描仪获取答案:

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
    if (scanResult != null) {
        // handle scan result
    }
    // else continue with any other code you need in the method
  ...
}

您唯一的其他选择是提取条形码扫描仪的所有代码并将其合并到您的项目中,然后弄清楚它是如何工作的以及您需要在哪里将其结合到您的应用程序中。那么每次 ZXing 进行更新时,您都必须重新执行此操作。真是一团糟!

关于使用 Zxing 的 Android 条码扫描器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16821950/

相关文章:

java - ViewHolder ImageView 安卓

android - 如何在没有 SDK Manager 的情况下手动下载和添加 v7-appcompat 库

android - 如何在不使用数据库的情况下轻松存储持久化数据?

android - 从 adapterview 启动一个新的 Intent 这么慢?

java - 在 itext 中的表格单元格中添加更多文本

jquery - 如何才能让这个条形码正确显示

google-sheets - 如何在 Google Sheet 中打印 Libre Barcode EAN13 字体文本

java - 如何通过按钮和另一个方法调用一个方法

android - 我可以在调用 Intent.ACTION_VIEW 时禁用某个选项吗?

java - 如何正确使用getIntExtra?