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.
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. –