2012-04-12 16 views
5

sono riuscito a utilizzare la libreria di scansione di codici a barre ZXing, ma solo in modalità orizzontale.libreria di scansione di codici a barre Android + ZXing - dimensioni e orientamento personalizzati

Sono anche riuscito a impostare l'anteprima della fotocamera in modo verticale e visualizzarla correttamente (senza allungamento), ma ora il codice a barre non funziona affatto. here're le modifiche che ho apportato al "setDesiredCameraParameters" a "CameraConfigurationManager.java" al fine di mostrare correttamente la fotocamera:

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

ho provato alcune soluzioni di cui su altri luoghi, ma o si don funzionano, o funzionano ma non possono mostrare correttamente l'anteprima della fotocamera. esempi: 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

quando ho finito con questo, ho anche bisogno di personalizzare le dimensioni posizione & del rettangolo per la scansione. so che ho bisogno di cambiare "setManualFramingRect" su "CameraManager.java", ma non sono sicuro se lo faccio correttamente. ecco il codice per questo:

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

naturalmente, ho cambiato "OpenDriver" per chiamare:

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

ti prego, aiutami.


MODIFICA: ora ho scoperto che non funziona su alcuni dispositivi. si blocca all'inizio, e se esegui il debug, puoi vedere che anche l'anteprima non funziona bene.

+1

Penso che il prossimo post potrebbe rispondere alla mia domanda: http://stackoverflow.com/questions/16252791/how-to-show-zxing-camera-in-portrait-mode-android/16252917#16252917. tuttavia, poiché c'è stato molto tempo da quando ho testato la libreria zxing, non so quanto bene funzioni. –

risposta

2

C'è molto di più. Ad esempio, è necessario "ruotare" effettivamente i dati della fotocamera (o scansionarli come se fossero verticali) quando l'orientamento della fotocamera non è lo stesso dell'orientamento del dispositivo. E quando si utilizza una fotocamera frontale, è necessario tenere conto del fatto che la sua rotazione è invertita.

+0

ho provato il collegamento che ho già scritto - non ha funzionato. conosci qualcuno che è riuscito a farlo? –

+0

Sì, l'ho fatto: https://play.google.com/store/apps/details?id=com.srowen.bs.android –

+0

beh, intendevo dire se qualcuno poteva condividere la soluzione a questo problema (senza costi). :) –

Problemi correlati