Agregar menú a ZXings barcodescanner, y apretar la vista de superficie

Zxings barscanner app, lo he implementado, como un proyecto de biblioteca, y funciona.

Ahora voy a cambiar el tamaño del campo (campo de destino) que se escanea (hecho así). (Aunque el área de exploración sigue siendo la misma, esto no importó puesto que el foco todavía estaba en el centro).

Pero entonces necesitaba insertar un menú en el lado izquierdo. Esto me obliga a cambiar el campo de destino, y esto es cuando comienza a estrellarse, si cambio el tamaño de la vista de superficie o viewFinderView y si lo envuelvo en una vista relativa, todavía decodifica sólo el centro (de causa). Simplemente no puedo encontrar una solución: – /

Corto : Puedo cambiar el área donde el escaneo debe suceder pero esto es solamente visible. El área escaneada real sigue siendo el centro de la pantalla completa y no el centro del área de escaneado visible movido.

¿Alguien puede ayudarme?

XML de la disposición (con el menú insertado, e innecesario quitado):

<SurfaceView android:id="@+id/preview_view" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <com.google.zxing.client.android.ViewfinderView android:layout_marginLeft="120dip" android:id="@+id/viewfinder_view" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/transparent" /> <LinearLayout android:id="@+id/buttonPanel" android:layout_width="120dip" android:layout_height="fill_parent" android:background="#000" android:orientation="vertical" android:paddingBottom="15dip" android:paddingTop="15dip" > <TextView android:id="@+id/menuText" android:layout_weight="1" android:layout_width="90dip" android:layout_height="wrap_content" android:layout_marginLeft="15dip" android:text="@string/menu_title"/> <ImageView android:id="@+id/d1Button" android:layout_width="90dip" android:layout_height="wrap_content" android:layout_marginLeft="15dip" android:layout_weight="2" android:onClick="scanner1d" android:src="@drawable/d1image" /> <ImageView android:id="@+id/d2Button" android:layout_width="90dip" android:layout_height="wrap_content" android:layout_marginLeft="15dip" android:layout_weight="2" android:onClick="scanner2d" android:src="@drawable/d2image" /> </LinearLayout> <LinearLayout android:id="@+id/result_view" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/result_view" android:orientation="vertical" android:padding="4dip" android:visibility="gone" > **removed** </LinearLayout> **removed** 

Imagen de la izquierda: Es la forma en que la vista es ahora y el elemento colocado donde no se está reconociendo.

Imagen derecha: Elemento colocado donde se reconoce (Cómo compruebo que no se ha cambiado el área de destino):

Imagen de la vistaResultado encontrado

Cambios en CameraManager (apretando el visor):

 public Rect getFramingRect() { // added int menuSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float) 120, context.getResources().getDisplayMetrics()); // end of added Point screenResolution = configManager.getScreenResolution(); if (framingRect == null) { if (camera == null) { return null; } int width = screenResolution.x * 3 / 4; if (width < MIN_FRAME_WIDTH) { width = MIN_FRAME_WIDTH; } else if (width > MAX_FRAME_WIDTH) { width = MAX_FRAME_WIDTH; } int height = screenResolution.y * 3 / 4; if (height < MIN_FRAME_HEIGHT) { height = MIN_FRAME_HEIGHT; } else if (height > MAX_FRAME_HEIGHT) { height = MAX_FRAME_HEIGHT; } // added menu size for calculation int leftOffset = ((screenResolution.x -menuSize - width) / 2); int topOffset = (screenResolution.y - height) / 2; framingRect = new Rect(leftOffset, topOffset, leftOffset + width, topOffset + height); Log.d(TAG, "Calculated framing rect: " + framingRect); } return framingRect; } 

Ahora he tomado todo en un pequeño proyecto que se puede encontrar aquí (problema arreglado, faltaba un lib) oct 18 10:14 CET

Si aprieta tanto la vista de superficie como la vista de vista, en realidad funcionará.

Aunque hay que tener en cuenta que la imagen está comprimida, por lo que el rectángulo de destino tiene que ser mucho más pequeño.

  • Cómo leer varios códigos qr de una imagen usando la biblioteca zxing
  • Cómo codificar información de contacto (MeCard) en Android mediante ZXing
  • Crear un código QR y mostrarlo en ImageView
  • Bloquee la orientación de la pantalla a la vertical al escanear con la librería Zxing, la aplicación Xamarin.android.
  • Android Genera código QR y código de barras usando Zxing
  • Incorporación de ZXing en la aplicación de Android
  • No se puede escanear QRCode a través del cliente zxing
  • ZXing Android Generar código de barras 1D
  • Agregue el proyecto android de ZXing como biblioteca en android studio
  • Escáner de código de barras ZXing para Webapps
  • Escáner de código QR
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.