Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


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

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.