加快zxing QR扫描时间为android?

时间:2014-03-12 07:21:04

标签: android qr-code zxing

我正在使用Zxing库在我的应用程序中仅扫描QRcode 39。感谢sean的出色工作。它工作正常,但问题是,扫描需要更多时间。我用前置摄像头和后置摄像头扫描。

我正在使用zxing项目作为我的应用程序库。

在cameraInfo API的帮助下,我找到前置摄像头索引并将意图传递给ScanCard which extends CaptureActivity - > CameraManager

public class ScanCard extends CaptureActivity {

@Override
public void handleDecode(Result rawResult, Bitmap barcode) {
    // TODO Auto-generated method stub
    super.handleDecode(rawResult, barcode);
    mScanResult = rawResult.getText().toString();
}
}

在Camera Manager类中,我进行了相应更改,以显示前置摄像头进行扫描,如下所示。

 public void openDriver(SurfaceHolder holder, int myCamera)
    throws IOException {

Camera theCamera = camera;

if (theCamera == null) {
    theCamera = Camera.open(myCamera);
    if (theCamera == null) {
        throw new IOException();
    }
    camera = theCamera;
}
theCamera.setPreviewDisplay(holder);

if (!initialized) {
    initialized = true;
    configManager.initFromCameraParameters(theCamera);
    if (requestedFramingRectWidth > 0 && requestedFramingRectHeight > 0) {
        setManualFramingRect(requestedFramingRectWidth,
                requestedFramingRectHeight);
        requestedFramingRectWidth = 0;
        requestedFramingRectHeight = 0;
    }
}
configManager.setDesiredCameraParameters(theCamera);
SharedPreferences prefs = PreferenceManager
        .getDefaultSharedPreferences(context);
reverseImage = prefs.getBoolean(PreferencesActivity.KEY_REVERSE_IMAGE,
        false);
 }

我该怎么做才能让扫描更快?谢谢你的帮助

当我四处冲浪时,我得到了这个Nimbledroid。与NimbleDroid一起使用会很好吗?

2 个答案:

答案 0 :(得分:-2)

https://github.com/zxing/zxing核心文件夹是公平的,可以处理android。你不需要使用android-xxx项目。

如果您想更快地扫描代码,您应该使用ZBar库http://zbar.sourceforge.net/,但它是在GPL许可下。

修改

int bitmapWidth = bitmap.getWidth();
int bitmapHeight = bitmap.getHeight();
int[] pixels = new int[bitmapWidth * bitmapHeight];

bitmap.getPixels(pixels, 0, bitmapWidth, 0, 0, bitmapWidth, bitmapHeight);
bitmap.recycle();
RGBLuminanceSource source = new RGBLuminanceSource(bitmapWidth, bitmapHeight, pixels);
BinaryBitmap binaryBitmap = new BinaryBitmap(new HybridBinarizer(source));
Reader reader = new MultiFormatReader();

try {
    return reader.decode(binaryBitmap).toString();
} catch (Exception e) {
    // nothing happens - entry is just not available in this frame
}

return null;

位图是从摄像机视频预览创建的Bitmap对象。 Here您解释了如何设置相机预览。 在Camera对象中,您应该设置PreviewCallback,它会为您提供应转换为位图的字节。 Zxing有一个很好的api,但他们的Android应用程序是垃圾 - 这就是你需要的全部。

HTH

PS。放入谷歌" zbar android" - 第一个链接包含在github上分享的api api ...

答案 1 :(得分:-3)

为什么不尝试将zxing项目添加为应用程序中的库,而不是添加zxing库的所有包。