Zxings Barscanner App, ich habe es implementiert, als ein Bibliotheksprojekt, und es funktioniert.Hinzufügen von Menü zu ZXings Barcodescanner und Zusammendrücken der Oberflächenansicht
Jetzt soll ich die Größe des Feldes (Zielfeld) ändern, das gescannt wird (auch getan). (obwohl der Scanbereich derselbe bleibt, war dies egal, da der Fokus noch in der Mitte war.)
Aber dann musste ich ein Menü auf der linken Seite einfügen. Dies zwingt mich, das Zielfeld zu ändern, und das ist, wo es abstürzt, wenn ich die Größe der Oberflächenansicht oder der viewFinderView ändere und wenn ich es in eine relative Ansicht verpacke, decodiert es immer nur die Mitte (aus Grund). Ich kann einfach keine Lösung finden: -/
Kurz: Ich bin in der Lage, den Bereich zu ändern, wo der Scan stattfinden sollte, aber das ist nur sichtbar. Der tatsächlich gescannte Bereich ist immer noch der Mittelpunkt des gesamten Bildschirms und nicht der Mittelpunkt des verschobenen sichtbaren Scanbereichs.
Kann mir jemand helfen?
Layout XML (mit dem Menü eingefügt und unnötigen entfernt):
<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**
Links im Bild: Ist, wie der Blick jetzt ist und Element platziert, wo es nicht ist, erkannt wird .
Rechts im Bild: Item platziert, wo es erkannt wird (wie ich das Zielgebiet überprüfen wird nicht geändert):
Änderungen an CameraManager (Quetschen des Suchers):
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;
}
Jetzt habe ich es in ein kleines Projekt übernommen, das gefunden werden kann here (Problem behoben, fehlte eine Lib) Okt 18 10:14 C ET
Code auf dem Weg, halten –
Verloren die Stacktraces, wird daran arbeiten, sie neu zu erstellen. Und fügen Sie eine Erklärung zu ihnen in der Nähe –
Der Absturz war, wenn die Oberflächenansicht größer als Viewfinder View war, aber wenn die gleiche Größe, es "funktioniert", immer noch große Schwierigkeiten mit der Erkennung obwohl. –