2012-04-12 24 views
5

he tenido éxito usando la biblioteca de escaneo de códigos de barras ZXing, pero solo en modo apaisado.android + ZXing biblioteca de escaneo de códigos de barras - tamaño y orientación personalizados

También he tenido éxito al configurar la vista previa de la cámara para que esté en el modo retrato Y lo muestre correctamente (sin estirar), pero ahora el código de barras no funciona en absoluto. Acá los cambios que he hecho a "setDesiredCameraParameters" en "CameraConfigurationManager.java" con el fin de mostrar la cámara correctamente:

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

he intentado algunas soluciones mencionadas en otros lugares, pero o bien Don No funcionan, o funcionan, pero no pueden mostrar la vista previa de la cámara correctamente. ejemplos: 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

cuando haya terminado con eso, yo también necesidad de personalizar el tamaño & ubicación del rectángulo a la exploración. Sé que necesito cambiar "setManualFramingRect" en "CameraManager.java", pero no estoy seguro si lo hago correctamente. aquí está el código para que:

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

por supuesto, he cambiado "openDriver" llamar:

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

por favor me ayude.


EDIT: ahora me he dado cuenta de que no funciona en algunos dispositivos. se bloquea al principio, y si depura, puede ver que incluso la vista previa no funciona bien.

+1

Creo que la siguiente publicación podría responder a mi pregunta: http://stackoverflow.com/questions/16252791/how-to-show-zxing-camera-in-portrait-mode-android/16252917#16252917. sin embargo, dado que hubo un largo tiempo desde que probé la biblioteca zxing, no sé qué tan bien funciona. –

Respuesta

2

Hay más que eso. Por ejemplo, necesita "girar" realmente los datos de la cámara (o escanearlos como si estuvieran en posición vertical) cuando la orientación de la cámara no es la misma que la orientación del dispositivo. Y al usar una cámara frontal, debe tener en cuenta el hecho de que su rotación se invierte.

+0

intenté el enlace sobre el que ya he escrito, no funcionó. ¿Conoces a alguien que haya tenido éxito en hacerlo? –

+0

Sí, lo hice: https://play.google.com/store/apps/details?id=com.srowen.bs.android –

+0

Bueno, me refiero a si alguien podría compartir la solución a este problema (sin costo). :) –

Cuestiones relacionadas