2012-04-12 36 views
5

我已經成功使用ZXing條碼掃描庫,但只能在橫向模式下使用。android + ZXing條碼掃描庫 - 自定義尺寸和方向

我也成功地將相機預覽設置爲肖像模式,並正確顯示(沒有拉伸),但現在條形碼根本不起作用。 我這裏還有我在爲了顯示正確的相機上的「CameraConfigurationManager.java」「setDesiredCameraParameters」所做的更改:

void setDesiredCameraParameters(Camera camera) 
{ 
    Camera.Parameters parameters = camera.getParameters(); 
    Log.d(TAG, "Setting preview size: " + cameraResolution); 
    setFlash(parameters); 
    setZoom(parameters); 
    camera.setDisplayOrientation(90); 
    parameters.set("rotation", 90); 
    parameters.setPreviewSize(cameraResolution.y, cameraResolution.x); 
    camera.setParameters(parameters); 
} 

我已經嘗試過在其他地方提到了一些解決方案,但他們要麼別沒有工作,或他們工作,但無法正確顯示相機預覽。 例子: How to use Zxing in portrait mode? http://code.google.com/p/zxing/issues/detail?id=178#c46 https://github.com/pplante/zxing-android/issues

當我完成了這一點,我還需要自定義矩形的位置&尺寸的掃描。我知道我需要更改「CameraManager.java」上的「setManualFramingRect」,但我不確定是否正確。這裏是該代碼:

public void setManualFramingRect(Rect rect) 
{ 
    if (initialized) 
    { 
     Point screenResolution = configManager.getScreenResolution(); 
     if (rect.right >= screenResolution.x) 
      rect.right = screenResolution.x - 1; 
     if (rect.left < 0) 
      rect.left = 0; 
     if (rect.bottom >= screenResolution.y) 
      rect.bottom = screenResolution.y - 1; 
     if (rect.top < 0) 
      rect.top = 0; 
     framingRect = rect; 
     Log.d(TAG, "Calculated manual framing rect: " + framingRect); 
     framingRectInPreview = null; 
    } 
    else 
     _requestedFramingRect = new Rect(rect); 
} 
當然

,我已經改變了 「openDriver」 來稱呼:

if (_requestedFramingRect != null) 
    setManualFramingRect(_requestedFramingRect); 

請幫助我。


編輯:現在我發現它在某些設備上不起作用。它一開始就崩潰了,如果你進行調試,你會發現即使是預覽也不能正常工作。

+1

我認爲下一篇文章可以回答我的問題:http://stackoverflow.com/questions/16252791/how-to-show-zxing-camera-in-portrait-mode-android/16252917#16252917。然而,自從我測試zxing庫以來有很長一段時間,我不知道它的工作效果如何。 – 2013-04-27 14:25:17

回答

2

還有比這更多的東西。例如,當相機方向與設備方向不一致時,您需要實際「旋轉」相機數據(或者,如同垂直方向進行掃描)。當使用前置攝像頭時,需要考慮其旋轉方向相反的事實。

+0

我嘗試了我已經寫過的鏈接 - 它不起作用。你知道一個成功的人嗎? – 2012-04-12 19:50:06

+0

是的,我做到了:https://play.google.com/store/apps/details?id=com.srowen.bs.android – 2012-04-12 23:52:49

+0

我的意思是,如果任何人都可以分享解決方案(無成本)。 :) – 2012-04-13 08:14:23