Android - 条码扫描器

时间:2012-05-02 17:31:44

标签: android barcode-scanner

我需要创建一个应用程序,其中一个功能将具有条形码扫描仪。我正在寻找一些代码示例来制作条形码扫描仪,但我还没有找到任何完整的示例代码。

我发现的只是一个与Zxing app一起使用的代码示例。但我不想执行任何辅助应用程序。我希望拥有一体化。

有人知道一些例子吗?

感谢。

4 个答案:

答案 0 :(得分:4)

ZXing是开源的!如果您真的想要实现自己的条形码扫描仪,那么请查看源代码。

您可以在线浏览代码here,它被许可为Apache License 2.0。

答案 1 :(得分:3)

Zxing有一个很棒的基于Intent的API,旨在用作辅助应用程序。我建议您检查用户是否安装了Zxing应用,如果没有,请将其重定向到Google Play商店进行下载。

答案 2 :(得分:2)

我知道我在这里回答很晚,但所有人都在寻找这个问题的最新答案,不再需要依赖第三方apis,Google通过Google Play Services 7.8提供Barcode Scanning APIs。有关详细信息,请参阅CodeLabsDocumentationGithub Sample

答案 3 :(得分:0)

如果您想在应用内部实施条形码扫描器,而不依赖于其他可以使用 ZXing Android Embedded 的应用,您只需要在您的gradle dependecies中声明其依赖并使用其中的功能应用

要使用它,请将以下内容添加到build.gradle文件(项目/模块):

public void scanBarcode() {
    IntentIntegrator integrator = new IntentIntegrator(this);
    integrator.setDesiredBarcodeFormats(IntentIntegrator.ONE_D_CODE_TYPES);
    integrator.setPrompt("Scan the barcode");
    integrator.setCameraId(0);  // Use a specific camera of the device
    integrator.setBeepEnabled(false);
    integrator.setBarcodeImageEnabled(true);
    integrator.initiateScan();        
}

现在,在您的代码中,您可以通过以下方式开始扫描活动:

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
    if (scanResult != null && scanResult.getContents() != null) {
        String content = scanResult.getContents().toString();
        // content = this is the content of the scanned barcode

        // do something with the content info here
    }
}

以这种方式处理结果:

import os, random


def makerange(number):
    lijst = [random.randint(1, number) for _ in range(1, random.randint(2, number))]
    return lijst

a, b = makerange(20), makerange(20)
c = {item for item in a if item in b} # Set comprehension
print(c)

更多信息可在 ZXing Android Embedded github repo上找到,链接如下。

来源:https://github.com/journeyapps/zxing-android-embedded