2014-03-12 38 views
0

我正在使用Zxing库在我的应用程序中只扫描QRcode 39。感谢sean的精彩作品。它工作正常,但问题是,它需要更多的时间来扫描。我正在用前置摄像头和后置摄像头进行扫描。加速zxing QR扫描时间为android?

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

在cameraInfo API的帮助下,我找到了前置摄像头索引并将其传递给ScanCard which extends CaptureActivityCameraManager

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(); 
} 
} 

在相机管理器类,我改变相应地,显示面向照相机用于扫描如像下面的前面。

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一起去很好吗?

+1

什么是“Qrcode 39”。 “Code 39”?它不是“QR码”。多快”?原来的条形码扫描仪呢?您的应用中可能存在与该库无关的错误。 zxing在<10ms内扫描代码39。 –

+0

@Sean Owen,我同意你从谷歌播放下载的原始条形码扫描仪扫描,在不到10毫秒。如果我使用后置摄像头,我的应用也会发生同样的情况。但在前置摄像头的情况下,我不会在10毫秒内得到结果。我正在使用matricom [tablet](http://matricom.net/products/g-tab-quantum-10-1-quad-core-tablet/) –

+1

前置摄像头扫描不好。另外,请勿复制并粘贴我们的应用程序;这是不允许的。 https://github.com/zxing/zxing/wiki/License-Questions –

回答

-3

除了添加zxing库的所有包外,为什么不尝试将zxing项目作为库添加到应用程序中。

+0

这就是我所做的。我只将zxing项目作为我的库添加到我的应用程序中。我编辑了这个问题。 –

-2

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

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

EDIT

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上共享的android的api ...

+0

我刚更名了android zxing项目,并在我的应用程序中使用它。我怎样才能独自处理core.jar文件?这足以扫描QR码吗?如果是这样,那怎么可能?请你指导我一个工作的例子。看来zbar没有android sdk。 –

+0

编辑我的回答 – Gaskoin

+0

感谢客气的话@Gaskoin但zbar根本没有任何Android应用程序,问题不在于OP所说的“扫描速度”。 –