QR-Result in EditText darstellen

D

DMD-OL

Neues Mitglied
0
grüße euch
ich hab mir einen qr-code scanner aus dem netz kopiert und
und in einer Tabelle integriert.
der qr-scanner wird mit einem button in der tabelle gestartet und
das ergebnis in einem editText in der Tabelle dargestellt.
nur leider habe ich ein problem, sobald ich einen weiteren qr-scanner button
verwenden möchte, da ich nicht weiß, wie ich jedem button seinen eigenen
editText zuweisen kann.
mein activity.xml lautet:
Code:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Arbeitstag anlegen"
        android:id="@+id/arbeitstag_waehlen" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="6 Materialliste"
        android:id="@+id/materialliste"
        android:layout_below="@+id/arbeitstag_waehlen"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="6.1. Material zufügen"
        android:textColor="#2f4f4f"
        android:id="@+id/textView_materialien"
        android:layout_below="@+id/materialliste"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:text="BETREFF:"
        android:textColor="#FF25343C"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textBetreff"
        android:layout_marginTop="11dp"
        android:layout_below="@+id/textView_materialien"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="16dp"
        android:layout_marginStart="16dp" />

    <TextView
        android:text="Text_1"
        android:layout_width="250dip"
        android:layout_height="wrap_content"
        android:id="@+id/viewBetreff_1"
        android:textColorHighlight="#FF367495"
        android:textColorHint="#FF367495"
        android:textStyle="bold|italic"
        android:textColor="#FF367495"
        android:layout_alignBaseline="@+id/textBetreff"
        android:layout_alignBottom="@+id/textBetreff"
        android:layout_toRightOf="@+id/textBetreff"
        android:layout_marginLeft="10dp"
        android:layout_marginStart="10dp"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <TextView
        android:text="Text_2"
        android:layout_width="250dip"
        android:textColorHighlight="#FF367495"
        android:textColorHint="#FF367495"
        android:textStyle="bold|italic"
        android:textColor="#FF367495"
        android:layout_height="wrap_content"
        android:id="@+id/viewBetreff_2"
        android:layout_below="@+id/viewBetreff_1"
        android:layout_alignLeft="@+id/viewBetreff_1"
        android:layout_alignStart="@+id/viewBetreff_1"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <TextView
        android:layout_width="27sp"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:text="      MENGE  ARTKL   BESCHREIBUNG"
        android:textSize="12sp"
        android:gravity="left"
        android:background="#FF365464"
        android:textColor="#FFFEFEFE"
        android:id="@+id/textView_header"
        android:layout_below="@+id/textView_materialien"
        android:layout_marginTop="60sp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <ScrollView
        android:id="@+id/scrollView"
        android:layout_width="match_parent"
        android:layout_height="250dip"
        android:layout_below="@+id/textView_header"
        android:layout_marginTop="5dp" >

        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="0dp"
            android:id="@+id/tableLayout"
            android:orientation="vertical"
            android:background="#c4d3db">

            <TableRow
                android:id="@+id/tableRow_0"
                android:layout_height="match_parent"
                android:layout_width="wrap_content">

                <TextView
                    android:layout_width="18dip"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:text="1"
                    android:textSize="11sp"
                    android:gravity="center"
                    android:id="@+id/position_1"
                    android:layout_column="0" />

                <EditText
                    android:layout_width="42dip"
                    android:layout_height="wrap_content"
                    android:id="@+id/menge_1"
                    android:textSize="11sp"
                    android:ems="3"
                    android:gravity="center"
                    android:layout_column="1" />

                <EditText
                    android:layout_width="50dip"
                    android:layout_height="wrap_content"
                    android:id="@+id/artikel_1"
                    android:textSize="11sp"
                    android:ems="4"
                    android:gravity="center"
                    android:layout_column="2" />

                <EditText
                    android:layout_width="165dip"
                    android:layout_height="wrap_content"
                    android:id="@+id/beschreibung_1"
                    android:textSize="11sp"
                    android:gravity="center"
                    android:layout_column="3" />

                <Button
                    android:layout_width="45dip"
                    android:layout_height="20sp"
                    android:text="SCAN"
                    android:id="@+id/scan_1"
                    android:textSize="11sp"
                    android:background="#FF365464"
                    android:textColor="#FFFEFEFE"
                    android:layout_column="4" />

            </TableRow>

            <TableRow
                android:id="@+id/tableRow_1"
                android:layout_height="match_parent"
                android:layout_width="wrap_content">

                <TextView
                    android:layout_width="18dip"
                    android:layout_height="wrap_content"
                    android:textAppearance="?android:attr/textAppearanceSmall"
                    android:text="2"
                    android:textSize="11sp"
                    android:gravity="center"
                    android:id="@+id/position_2"
                    android:layout_column="0" />

                <EditText
                    android:layout_width="42dip"
                    android:layout_height="wrap_content"
                    android:id="@+id/menge_2"
                    android:textSize="11sp"
                    android:ems="3"
                    android:gravity="center"
                    android:layout_column="1" />

                <EditText
                    android:layout_width="50dip"
                    android:layout_height="wrap_content"
                    android:id="@+id/artikel_2"
                    android:textSize="11sp"
                    android:ems="4"
                    android:gravity="center"
                    android:layout_column="2" />

                <EditText
                    android:layout_width="165dip"
                    android:layout_height="wrap_content"
                    android:id="@+id/beschreibung_2"
                    android:textSize="11sp"
                    android:gravity="center"
                    android:layout_column="3" />

                <Button
                    android:layout_width="45dip"
                    android:layout_height="20sp"
                    android:text="SCAN"
                    android:id="@+id/scan_2"
                    android:textSize="11sp"
                    android:background="#FF365464"
                    android:textColor="#FFFEFEFE"
                    android:layout_column="4" />

            </TableRow>

        </TableLayout>

    </ScrollView>

</RelativeLayout>
und mein .java code:
Code:
package com.dmd_data_soft.material_zeit_erfassung;

import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
import com.google.zxing.qrcode.QRCodeReader;


public class material_zufuegen extends AppCompatActivity {

    QRCodeReader QR_Scanner;

    private TextView position_1,position_2;

    private EditText menge_1,artikel_1,beschreibung_1,
            menge_2,artikel_2,beschreibung_2;

    public Button scan_1,scan_2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_material_zufuegen);

        final Activity activity = this;

        menge_1 = (EditText)findViewById(R.id.menge_1);
        artikel_1 = (EditText)findViewById(R.id.artikel_1);
        beschreibung_1 = (EditText)findViewById(R.id.beschreibung_1);
        scan_1 = (Button) findViewById(R.id.scan_1);
        scan_1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                qr_scan(beschreibung_1);
            }
        });

        menge_2 = (EditText)findViewById(R.id.menge_2);
        artikel_2 = (EditText)findViewById(R.id.artikel_2);
        beschreibung_2 = (EditText)findViewById(R.id.beschreibung_2);
        scan_2 = (Button) findViewById(R.id.scan_2);
        scan_2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                qr_scan(beschreibung_2);
            }
        });
    }

    public void qr_scan(EditText product){
        IntentIntegrator integrator = new IntentIntegrator(this);
        integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
        integrator.setPrompt("Positioniere den QR-Code innerhalb des Rechecks!");
        integrator.setCameraId(0);
        integrator.setOrientationLocked(false);
        integrator.setBeepEnabled(false);
        integrator.setBarcodeImageEnabled(false);
        integrator.initiateScan();
        Toast.makeText(this,product.toString(),Toast.LENGTH_LONG).show();
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode,resultCode,data);
        if (result != null){
            if (result.getContents() == null){
                Toast.makeText(this,"You cancelled the scan",Toast.LENGTH_LONG).show();
            }else{
                beschreibung_1.setText(result.toString());
            }
        }else {
            super.onActivityResult(requestCode, resultCode, data);
        }
    }
}
wie kann ich die jeweils ausgelesenen qr-codes im entsprechenden editText darstellen lassen???
bitte hiiillllfffffeee...
 
Irgendwie ist das alles ein bisschen durcheinander.

Also erstmal der Scan ist eine eigene Activity oder?
Wenn ja dann musst duch auch den positiven Result abfangen. Das heißt wenn die App beendet wird, wird er an in die onActivityResult Methode springen. Dort musst du dann die Daten aus dem Intent "herrausnehmen":
Beispiel:
Code:
@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    {
        if (resultCode == Activity.RESULT_OK) {
            //Daten auslesen
            Bundle intent = data.getExtras();

Dort wird dein QR-Scanner dann den Text hinterlegen. Diesen kannst dann im EditText anzeigen lassen.

Also entweder habe ich einen denkfehler oder du hast folgende Fehler:
  • In der Methode qr_scan übergibts du ein EditText machst damit in der Methode nichts und dies gibts du dann am Ende als Toast aus
  • In der Methode onActivityResult ist die Zeile IntentResult result = IntentIntegrator.parseActivityResult(requestCode,resultCode,data); Dort nimmst du aus einem neuen IntentIntegrator die Result daten. Du musst meiner Meinung nach das
    IntentIntegrator integrator = new IntentIntegrator(this); für die ganze Klasse definieren und dann die Zeile ändern in IntentResult result = integrator.parseActivityResult(requestCode,resultCode,data);
Aber ich denke die anderen schlauen Köpfe hier können dir das genauer sagen.
 
Du kannst es so machen, wie oben beschrieben. Zusätzlich solltest du speicher, welchen Button du benutzt.

Daneben gibt es die Möglichkeit, die lib von zxing, in die App zu integrieren. Dann brauchst du keine eigenständige barcode scanner App, was vom use-case einfach schöner ist. Wenigsten ich mache es immer so.
Einfach mal danach googeln, es gibt eine relative viele Anleitungen dazu im Netz.
 
yeah danke, markus.tullius :)
so wie ich das oben hab, funktioniert es nicht.

ich habe es jetzt hinbekommen:
1. die buttons mit onClick = scan_1 in der .xml initialisieren
2. public void scan_1(View v) {
......
startActivityForResult(intent, 1);
}
3. public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == 1) {
String scanContent = scanningResult.getContents();
beschreibung_1.setText(scanContent);
}
aber wie schon von markus erwähnt, nur mit barcode scanner app :(
ich hab versucht die lib von xzing direkt zu integrieren
Code:
public class scannen extends AppCompatActivity {
  
    private EditText beschreibung_1;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_material_zufuegen);
        beschreibung_1 = (EditText)findViewById(R.id.beschreibung_1);
    }
    //wird mit onClick aus der .xml gestartet :)
    public void qr_1(View v) {
        IntentIntegrator integrator = new IntentIntegrator(this);
        integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
        integrator.setPrompt("Positioniere den QR-Code innerhalb des Rechecks!");
        integrator.setCameraId(0);
        integrator.setOrientationLocked(false);
        integrator.setBeepEnabled(false);
        integrator.setBarcodeImageEnabled(false);
        integrator.initiateScan();
        startActivityForResult(integrator, 1);                               // aber so nicht
    }
    public void qr_2(View v) {
        IntentIntegrator integrator = new IntentIntegrator(this);
        integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE_TYPES);
        integrator.setPrompt("Positioniere den QR-Code innerhalb des Rechecks!");
        integrator.setCameraId(0);
        integrator.setOrientationLocked(false);
        integrator.setBeepEnabled(false);
        integrator.setBarcodeImageEnabled(false);
        integrator.initiateScan();
        startActivityForResult(integrator, 2);                               // aber so nicht
    }
    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
        if (scanningResult != null && requestCode == 1 && resultCode == RESULT_OK ) {
            String scanContent = scanningResult.getContents();
            beschreibung_1.setText(scanContent);
        }
        else if (scanningResult != null && requestCode == 2 && resultCode == RESULT_OK){
            Toast toast = Toast.makeText(getApplicationContext(),         
             String scanContent = scanningResult.getContents();
             beschreibung_2.setText(scanContent);
        }
    }
}
 
Zuletzt bearbeitet:
Dann bau dir doch die von markus erwähnte lib von zxing ein. Dann brauchst du die extra App nicht mehr.
 
die lib ist in der build.gradle(module:app) schon reingelötet.
mit dem code oben versuche ich jetzt die lib auch zu nutzen, indem ich den
IntentIntegrator verwenden. leider kann ich den aber nicht mit
startActivityForResult(integrator, 1); verwenden.
ich versuche nämlich auch mehrere buttons zu verwenden.
startActivityForResult(integrator, 2);
...
wie macht man das denn?
 
jau, das ist sehr viel text!
 

Ähnliche Themen

D
Antworten
23
Aufrufe
2.555
Data2006
D
A
  • Alex1978
Antworten
4
Aufrufe
820
Alex1978
A
OnkelLon
Antworten
13
Aufrufe
1.986
OnkelLon
OnkelLon
Zurück
Oben Unten