aplicación de barrido de barras Zxings, lo he implementado, como un proyecto de biblioteca, y funciona.Añadiendo menú al escáner de código de barras de ZXings, y apretando la vista de superficie
Ahora voy a cambiar el tamaño del campo (Campo de destino) que se escanea (también). (aunque el área de escaneo sigue siendo la misma, esto no importó ya que el foco aún estaba en el centro)
Pero luego tuve que insertar un menú en el lado izquierdo. Esto me obliga a cambiar el campo de destino, y esto es si comienza a fallar, si cambio el tamaño de la vista de superficie o viewFinder y si lo envuelvo en una vista relativa, todavía decodifica solo el centro (de la causa). Simplemente no puedo encontrar una solución: -/
Corto: Puedo cambiar el área donde debería estar pasando el escaneo, pero esto solo es visible. El área escaneada real sigue siendo el centro de la pantalla completa y no el centro del área de escaneo visible movida.
¿Alguien me puede ayudar?
XML diseño (con el menú insertar, e innecesario eliminado):
<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 la vista es ahora y elemento colocado en la que no se reconoce .
derecho de imagen: línea consignados en el que se reconoce (¿Cómo puedo comprobar que el área objetivo no cambia):
Cambios en CameraManager (exprimiendo del 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 lo he sacado todo en un pequeño proyecto que se puede encontrar here (problema solucionado, faltaba una lib) oct 18 10:14 C ET
Código en su camino, espera –
Perdió las stacktraces, trabajará en recrearlas. Y añádales una explicación en breve –
El fallo se produjo cuando la vista de superficie era más grande que la vista de visor, pero si el mismo tamaño "funciona", sigue siendo un gran problema para reconocerlo. –