如何使用Android中的Zxing库从摄像头预览中解码条形码?

用户名

我想在我的android应用程序中实现独立的扫描仪。我在项目中使用zxing的core.jar库。

我需要从相机预览中解码条形码。但是我不知道如何实现。因为没有官方文档。

您能为我提供一个关于跟随事物的简单示例吗?1.初始化相机并进行预览。2.从预览中解码条形码。

或者

是否有任何示例项目可以做到这一点?

皮奥巴布

看一下我的简单实现:https : //github.com/piobab/code-scanner

我使用ZBar库,但是如果您愿意,可以将ZBarScannerView.java实现更改为ZXingScannerView(其余代码可以):

public class ZXingScannerView extends ScannerView {
public interface ResultHandler {
    public void handleResult(Result result);
}

private MultiFormatReader mMultiFormatReader;
private ResultHandler mResultHandler;

public ZXingScannerView(Context context) {
    super(context);
    setupScanner(null);
}

public ZXingScannerView(Context context, AttributeSet attributeSet) {
    super(context, attributeSet);
    setupScanner(null);
}

/**
 * Specify recognized codes types.
 * @param codeTypes list of codes types from ZXing library
 */
public void setCodeTypes(List<com.google.zxing.BarcodeFormat> codeTypes) {
    setupScanner(codeTypes);
}

private void setupScanner(List<com.google.zxing.BarcodeFormat> symbols) {
    Map<DecodeHintType,Object> hints = new EnumMap<DecodeHintType,Object>(DecodeHintType.class);
    // Add specific formats
    hints.put(DecodeHintType.POSSIBLE_FORMATS, symbols);
    mMultiFormatReader = new MultiFormatReader();
    mMultiFormatReader.setHints(hints);
}

/**
 * Register callback in order to receive data from scanner.
 * @param resultHandler
 */
public void setResultHandler(ResultHandler resultHandler) {
    mResultHandler = resultHandler;
}

@Override
public void onPreviewFrame(byte[] data, Camera camera) {
    Camera.Parameters parameters = camera.getParameters();
    Camera.Size size = parameters.getPreviewSize();
    int width = size.width;
    int height = size.height;

    Result rawResult = null;
    PlanarYUVLuminanceSource source = buildLuminanceSource(data, width, height);

    if(source != null) {
        BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
        try {
            rawResult = mMultiFormatReader.decodeWithState(bitmap);
        } catch (ReaderException re) {

        } catch (NullPointerException npe) {

        } catch (ArrayIndexOutOfBoundsException aoe) {

        } finally {
            mMultiFormatReader.reset();
        }
    }

    if (rawResult != null) {
        stopCamera();
        if(mResultHandler != null) {
            mResultHandler.handleResult(rawResult);
        }
    } else {
        camera.setOneShotPreviewCallback(this);
    }
}

public PlanarYUVLuminanceSource buildLuminanceSource(byte[] data, int width, int height) {
    Rect rect = getFramingRectInPreview(width, height);
    if (rect == null) {
        return null;
    }
    // Go ahead and assume it's YUV rather than die.
    PlanarYUVLuminanceSource source = null;

    try {
        source = new PlanarYUVLuminanceSource(data, width, height, rect.left, rect.top,
                rect.width(), rect.height(), false);
    } catch(Exception e) {
    }

    return source;
}

}

如果您使用gradle,请将'com.google.zxing:core:2.2'添加到您的依赖项中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用前置摄像头的dm77中的条形码扫描器库

来自分类Dev

QTQR不显示16.04中从文件或网络摄像头读取的条形码!

来自分类Dev

从网页使用智能手机摄像头扫描条形码

来自分类Dev

使用Zxing读取9个扩展条形码中的3个-在Android中

来自分类Dev

如何使条形码扫描仪从数据库中检查条形码编号?

来自分类Dev

如何使用Swift在iOS8中创建与矩形摄像头框架的顶部对齐的方形摄像头预览

来自分类Dev

如何通过手机摄像头扫描条形码和二维码?

来自分类Dev

在片段中,如何停止ZXing Scanner的摄像头?

来自分类Dev

ZXing android使用前置摄像头

来自分类Dev

如何使用zxing扫描条形码并使用jsonp返回?

来自分类Dev

Android使用Zxing生成QR码和条形码

来自分类Dev

在WebView Android中扫描条形码

来自分类Dev

生成的条形码Zxing Android的大小

来自分类Dev

将Zxing条形码扫描仪集成到我的android应用中

来自分类Dev

使用Javascript进行条形码解码

来自分类Dev

如何从C#Winforms中的条形码扫描仪读取条形码值

来自分类Dev

使用Zxing库解码条形码可在1台平板电脑上使用,但不能在另一台平板电脑上使用

来自分类Dev

使用Zxing库解码条形码可在1台平板电脑上使用,但不能在另一台平板电脑上使用

来自分类Dev

如何在不使用外部库的情况下捕获Java中的摄像头输入?

来自分类Dev

如何使用DirectShow和网络摄像头预览图像

来自分类Dev

如何使用本机Android Camera App读取条形码/二维码(无ZXing)?

来自分类Dev

后台OpenCV中的Android摄像头

来自分类Dev

使用ZXing库处理大数据时无法生成条形码

来自分类Dev

Android背景摄像头预览

来自分类Dev

使用Java Zxing API将条形码内容写为条形码下方的标签

来自分类Dev

从Gallery Android中的图像扫描条形码

来自分类Dev

如何在图像中查找多个条形码

来自分类Dev

如何通过GUI在Ubuntu中创建条形码?

来自分类Dev

如何在iPhone相机中扫描条形码?

Related 相关文章

  1. 1

    使用前置摄像头的dm77中的条形码扫描器库

  2. 2

    QTQR不显示16.04中从文件或网络摄像头读取的条形码!

  3. 3

    从网页使用智能手机摄像头扫描条形码

  4. 4

    使用Zxing读取9个扩展条形码中的3个-在Android中

  5. 5

    如何使条形码扫描仪从数据库中检查条形码编号?

  6. 6

    如何使用Swift在iOS8中创建与矩形摄像头框架的顶部对齐的方形摄像头预览

  7. 7

    如何通过手机摄像头扫描条形码和二维码?

  8. 8

    在片段中,如何停止ZXing Scanner的摄像头?

  9. 9

    ZXing android使用前置摄像头

  10. 10

    如何使用zxing扫描条形码并使用jsonp返回?

  11. 11

    Android使用Zxing生成QR码和条形码

  12. 12

    在WebView Android中扫描条形码

  13. 13

    生成的条形码Zxing Android的大小

  14. 14

    将Zxing条形码扫描仪集成到我的android应用中

  15. 15

    使用Javascript进行条形码解码

  16. 16

    如何从C#Winforms中的条形码扫描仪读取条形码值

  17. 17

    使用Zxing库解码条形码可在1台平板电脑上使用,但不能在另一台平板电脑上使用

  18. 18

    使用Zxing库解码条形码可在1台平板电脑上使用,但不能在另一台平板电脑上使用

  19. 19

    如何在不使用外部库的情况下捕获Java中的摄像头输入?

  20. 20

    如何使用DirectShow和网络摄像头预览图像

  21. 21

    如何使用本机Android Camera App读取条形码/二维码(无ZXing)?

  22. 22

    后台OpenCV中的Android摄像头

  23. 23

    使用ZXing库处理大数据时无法生成条形码

  24. 24

    Android背景摄像头预览

  25. 25

    使用Java Zxing API将条形码内容写为条形码下方的标签

  26. 26

    从Gallery Android中的图像扫描条形码

  27. 27

    如何在图像中查找多个条形码

  28. 28

    如何通过GUI在Ubuntu中创建条形码?

  29. 29

    如何在iPhone相机中扫描条形码?

热门标签

归档