Android QRCode扫描仪库

Jay*_*der 31 android qr-code

我们可以使用什么(如果有的话)我们可以调用图像上的QR数据发现和提取?

虽然到目前为止有很多帖子引用了ZXing库进行QRCode扫描,还有其他几个帖子要求QRCode扫描备选方案而我没有看到有用的反馈,我想我可能会再次询问社区.如果除了通过功能调用启动活动之外,还有使用库的方法,我还没有看到以这种方式说出它的例子或个人.

它实际上让我感到困惑的是,为什么没有将QRCode功能的本机实现添加到相机库或操作系统内的Google SDK中的类似位置.

调用并要求另一个应用程序(甚至请求下载)不是一个优雅的解决方案,任何用户都不应该屈服于这样的事情.作为开发人员,我们应该能够访问能够从图像或帧中提取QRCode的库,然后我们可以从中删除编码数据.

Jay*_*der 9

虽然Sean Owen和其他曾在Zxing图书馆工作过的人已经提供了一种在过去几年中使用条形码库的方法,但Google终于推出了一个正式版本的Google Play服务来处理qr和条形码.

条形码检测库,这里叙述.包含这些库将实现顺利集成.我将重新发布一些示例代码,以便从捕获的图像中获得这些结果.目前,我想更新我正式发布的答案.如果这确实提供了获取此信息的好方法(没有跳过箍和并发症),那么我将使用源更新并将其作为已接受的答案进行检查.

谷歌过去一年提供的检测库是一个更容易使用的库.它允许与相机API快速集成,并简单地提取信息.这将是我建议继续承认的组成部分.下面演示了一个用于处理Qr代码的快速代码段.少数伪代码也留在那里.

public final void analyzeFrameForQrCode(byte[] qrCodePictureF, int imageFormatF, XriteSize previewWindowSizeF)
{
    if(!qrCodeDetectionPossible() || qrCodePictureF == null || mIsAnalyzingQrCodeFrame)
    {
        return;
    }

    ... //Bitmap conversion code

    Frame frame = new Frame.Builder().setBitmap(pictureTaken).build();
    SparseArray<Barcode> barcodes = mBarcodeDetector.detect(frame);
    if(barcodes != null && barcodes.size() != 0)
    {
        Barcode qrCode = barcodes.valueAt(0);//barcodes.get(Barcode.QR_CODE);
        if(qrCode != null)
        {
             if(extractInformationFromQrCode(qrCode.rawValue)) {
                    mIsRequestingBarcodeDetection = false;
                    vibrateForQrCodeDiscovery();
                    ((Activity)mContext).runOnUiThread(new Runnable() {
                        @Override
                        public void run()
                        {
                            hideBarcodeDetection(true);
                        }
                    });
                }
            }
        }

     ... //Cleanup and code beyond Qr related material

   } 
}
Run Code Online (Sandbox Code Playgroud)

当然还有其他可以利用的电话.但那里确实只有几条线.但是,默认情况下,设备上没有使用库分析帧的服务.因此,在计算之前,您应该检查库是否可用(例如在互联网不可用时).这有点令人讨厌.我原以为它可以作为支持库或Google服务的一部分向所有设备发送的设备更新.但它需要首先与外部服务进行通信才能使用这些库调用.一旦它完成这一次,那么该设备从那一刻开始就是好的.

在我的小例子中,我在检查后弹出一个吐司,然后退出活动并让用户检查他们的连接.这也可以通过少量示例代码完成.

if(!mBarcodeDetector.isOperational())
{
    updateUserInstructions("The barcode library cannot be downloaded");
    return false;
}
Run Code Online (Sandbox Code Playgroud)

编辑(更新):

自从使用可用于条形码检测的最新Google Play服务视觉库以来,已经过了相当长的一段时间.虽然需要通过wifi下载库的限制确实是一个限制,但它是一次性过程.说实话......

...我们的设备将有连接.图书馆本身是在后台下载的,因此您甚至不会注意到它的发生,除非下载它时遇到问题,然后您必须报告适当的纠正措施,例如启用连接到互联网.

另外一个问题是,有时您将库集成到应用程序中会有点棘手.使用它作为库项目在某些设备上工作,然后在其他设备上失败.将jar添加到构建路径可以在更广泛的设备上工作(可能是全部,但它解决了一个问题).因此,我现在将其包含在您的项目中时使用辅助方法.

  • `但它首先需要与外部服务进行通信以使用这些库调用.所以它非常糟糕 (3认同)

小智 7

Android QRCode扫描仪库

这可能对您有所帮助,此库不需要任何下载或使用任何外部应用程序.我们可以将其直接集成到您的应用中,并将其用于扫描QR码.

https://github.com/dm77/barcodescanner

这个维基将帮助您与您的应用程序集成,

https://github.com/dm77/barcodescanner/blob/master/README.md


Nos*_*lvi 5

您还可以查看MobileVisionBarcodeScanner(注意我是这个包的作者)。它由 Google 的移动视觉 API 提供支持。另请参阅此处的概述 。


Dan*_* S. 5

我在我的应用程序中使用了这个库。它也适用于 xing,但您不需要任何第三方应用程序。另外它真的很容易使用。

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

也许你搜索过这样的东西。