Zxing 条码扫描器无法从我的应用程序打开

Zxing barcode scanner doesn't open from my app

我通过将包 com.google.zxing.integration.android 添加到我的项目中并将此代码添加到我的 MainActivity.java 文件中来集成 Zxing 条码扫描器:

public static Button scanBtn;

@Override
protected void onCreate(Bundle savedInstanceState) {
    ...
    scanBtn = (Button) findViewById(R.id.scan_button);

    scanBtn.setOnClickListener(this);
}

public void onClick(View v) {
    IntentIntegrator scanIntegrator = new IntentIntegrator(this);
    scanIntegrator.initiateScan();
}

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
    ...
}

出于某种原因,当我单击按钮 (scanBtn) 时,没有任何反应。日志中没有任何内容,屏幕上也没有任何反应。

你能帮帮我吗?

你能试试这个代码,看看它是否适合你吗?

scanBtn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    new IntentIntegrator(this).initiateScan();  
                }
            });

只需在您的 onCreate 中添加上面的代码,而不是这样:

scanBtn.setOnClickListener(this);

还有这个:

public void onClick(View v) {
IntentIntegrator scanIntegrator = new IntentIntegrator(this);
scanIntegrator.initiateScan();

}

让我知道这是否适合你:)

首先在你的 gradle 文件中添加以下依赖项

compile 'com.journeyapps:zxing-android-embedded:3.1.0@aar'
compile 'com.google.zxing:core:3.2.0'

移除 com.google.zxing.integration.android

然后像下面的代码

那样改变你的onClick方法
public void onClick(View v) {
     IntentIntegrator scanIntegrator = new IntentIntegrator(MainActivity.this);
                    scanIntegrator.setPrompt("Scan");
                    scanIntegrator.setBeepEnabled(true);
                    scanIntegrator.setOrientationLocked(true);
                    scanIntegrator.setBarcodeImageEnabled(true);
                    scanIntegrator.initiateScan();
}

它会实例化scan,你可以在onActivityResult

中得到scan的结果

像这样

  @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        if (scanningResult != null) {
            if (scanningResult.getContents() != null) {
                String scanContent = scanningResult.getContents().toString();
                String scanFormat = scanningResult.getFormatName().toString();
            }

            Toast.makeText(this,scanContent+"   type:"+scanFormat,Toast.LENGTH_SHORT).show();

        }else{
            Toast.makeText(this,"Nothing scanned",Toast.LENGTH_SHORT).show();
        }
    }

Here 是在 android

中使用 Zxing 条码扫描器的示例项目

希望对您有所帮助

我给相机添加了权限,解决了。