2014-03-12 147 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所說的「掃描速度」。 –