【问题标题】:How to read 1D barcode scanners in Zxing and Googles Mobile Vision API?如何在 Zxing 和 Google 的 Mobile Vision API 中读取一维条码扫描器?
【发布时间】:2018-02-09 12:30:11
【问题描述】:

我正在使用 Zxing 读取条码扫描仪。我可以读取 QR 码但无法读取一维条码。我也尝试使用 Google Play 服务移动 API 但也无法读取那里的一维条码扫描仪。

这里是Zxing的代码

    public class MainActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler {

    private static final int REQUEST_CAMERA = 1;
    private ZXingScannerView mScannerView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main);
        mScannerView = new ZXingScannerView(MainActivity.this);
        setContentView(mScannerView);




    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        mScannerView.stopCamera();
    }

    private void showMessageOKCancel(String message, DialogInterface.OnClickListener okListener) {
        new android.support.v7.app.AlertDialog.Builder(MainActivity.this)
                .setMessage(message)
                .setPositiveButton("OK", okListener)
                .setNegativeButton("Cancel", null)
                .create()
                .show();
    }

    @Override
    public void onResume() {
        super.onResume();
        // Register ourselves as a handler for scan results.
        mScannerView.setResultHandler(this);
        // Start camera on resume
        mScannerView.startCamera();
    }

    @Override
    public void handleResult(Result rawResult) {
        final String result = rawResult.getText();
        Log.d("QRCodeScanner", rawResult.getText());
        Log.d("QRCodeScanner", rawResult.getBarcodeFormat().toString());
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("Scan Result");
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                mScannerView.resumeCameraPreview(MainActivity.this);
            }
        });
        builder.setNeutralButton("Visit", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com "+result.trim()));
                startActivity(browserIntent);
            }
        });
        builder.setMessage(rawResult.getText());
        AlertDialog alert1 = builder.create();
        alert1.show();
    }
}

帮助我读取这两个库中的一维条形码。?上面是一维条码图片

【问题讨论】:

  • 你能附上你不扫描的条形码吗?
  • @Abhishekkumar 你的意思是一维扫描仪的图像?
  • 请粘贴您的条形码编号。这不是扫描或附加条形码,因为我在我的项目中使用相同的库。 @Arjun
  • @Abhishekkumar 我添加了图片,请检查..
  • 在我的情况下它正在扫描@Arjun

标签: android google-play-services qr-code zxing barcode-scanner


【解决方案1】:

我在我的项目中使用这个库 Zxing,我遇到了这个库的很多问题,如果你正在使用这个库,请确保以下几点:

  1. 您使用 Scanner 的 Activity 不会将类放在您自己的 Android Studio 包中,只需在您的应用包中创建 Activity。

  2. 如果您正在自定义扫描仪屏幕,请执行一次,如果您不时更改屏幕,则会产生无法扫描的问题。

  3. 另外我发现如果扫描相同的条形码需要更多时间,这个库会给出一些错误的结果。

现在,我正在分享我的代码:

onCreate 方法内:

    //Scanner
    mScannerView = new ZXingScannerView(this);
    RelativeLayout rl = (RelativeLayout) findViewById(R.id.relative_scan_take_single);
    rl.addView(mScannerView);
    mScannerView.setResultHandler(this);
    mScannerView.startCamera();
    mScannerView.setSoundEffectsEnabled(true);
    mScannerView.setAutoFocus(true);
  }


 @Override
    public void onResume() {
        super.onResume();
        mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
        mScannerView.startCamera();          // Start camera on resume
    }

@Override
public void onPause() {
    super.onPause();
    mScannerView.stopCamera();           // Stop camera on pause
}

 @Override
 public void handleResult(Result rawResult) {
    // Do something with the result here
    Log.e(TAG, rawResult.getText()); // Prints scan results
    Log.e(TAG, rawResult.getBarcodeFormat().toString());

    Log.e("SCAN_RESULT", "" + rawResult.getText());
    //dataSingle.put("0",rawResult.getText());

【讨论】:

  • 它的库问题,在我的回答中提到了 1 点,请确保您的活动仅在您的包内,而不是任何自定义包
猜你喜欢
  • 2011-11-06
  • 1970-01-01
  • 1970-01-01
  • 2014-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
相关资源
最近更新 更多