1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

Barcodescanner

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von adriax, 20.02.2012.

  1. adriax, 20.02.2012 #1
    adriax

    adriax Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    0
    Registriert seit:
    20.02.2012
    Hallo,

    vorweg ich bin neu in der Android App Entwicklung und wollte nun mal anfangen bissel was hier zu tun bzw. zu erlernen.

    Unzwar würde ich gerne einen Barcode einscannen und das Ergebnis in ein EditText übergeben.
    Naja nun weiß ich weder wie ich einen Barcodescanner einbinde noch wie ich dem EditText das Resultat übergebe...


    Ich hoffe Ihr könnt mir helfen;-)

    Mit freundlichen Grüßen
    AdriaX
     
  2. swordi, 20.02.2012 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    ich glaub das ganze ist aktuell etwas zu viel für dich. du solltest zuerst die grundlagen lernen ( mal eben wie man einem edittext einen text gibt )

    und dann solltest du dich an die integration einer barcode library machen
     
  3. adriax, 20.02.2012 #3
    adriax

    adriax Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    0
    Registriert seit:
    20.02.2012
    soa wie ich einem EditText etwas übergebe weiß ich nun ;-) nun gehts weiter mit der Barcode Library
     
  4. swordi, 20.02.2012 #4
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    entweder rufst einen installierte. Barcode Scanner per intent auf oder integrierst eine library. Empfehlen kann ich dir xzing

    Gesendet mit der Android-Hilfe.de-App
     
  5. adriax, 20.02.2012 #5
    adriax

    adriax Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    0
    Registriert seit:
    20.02.2012
    wie integriere den code den?
     
  6. the_alien, 20.02.2012 #6
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
  7. swordi, 20.02.2012 #7
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    Tja ist nicht so einfach hier zu erläutern.
    Aber einfach mal den Code von xzing nehmen und ansehen.

    Oder halt nie andere library.

    Gesendet mit der Android-Hilfe.de-App
     
  8. adriax, 21.02.2012 #8
    adriax

    adriax Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    0
    Registriert seit:
    20.02.2012
    danke für die schnellen antworten :)
    ich werd mir das gleich mal ansehen:) falls ich noch fragen dazu habe melde ich mich;-)
     
  9. adriax, 21.02.2012 #9
    adriax

    adriax Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    0
    Registriert seit:
    20.02.2012
    so kann die app jetzt aus meiner heraus öffnen, nun die Frage...
    ich will den eingescannten Barcode einem EditText übergeben und komm hier iwie nicht weiter.... da das mit .setText(scanResult) nicht klappt.....
     
  10. swordi, 21.02.2012 #10
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    keiner kann hellsehen hier.

    zeig uns bitte deinen code
     
  11. adriax, 21.02.2012 #11
    adriax

    adriax Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    0
    Registriert seit:
    20.02.2012
    sry, ich hatte ganz vergessen den code mit reinzustellen
    Code:
    package My.barcodeerfassung;
    
    
    
    
    
    import com.google.zxing.integration.android.IntentIntegrator;
    import com.google.zxing.integration.android.IntentResult;
    
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.content.Intent;
    
    import android.os.Bundle;
    
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    
    
    
    
    public class BarcodeerfassungActivity extends Activity
          implements OnClickListener {
     
        private Button Test;
        private Button Scan;
        private IntentResult a;
    
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            Test = (Button) findViewById(R.id.Test);
            Test.setOnClickListener(this);
            Scan = (Button) findViewById(R.id.scan);
            Scan.setOnClickListener(this);
        }
        public void onActivityResult(int requestCode, int resultCode, Intent intent) {
              IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
              if (scanResult != null) {
                  a = scanResult;
              }
              // else continue with any other code you need in the method
        }
        public void onClick(View v) {
    
            IntentIntegrator integrator = new IntentIntegrator(this);
            integrator.initiateScan();
            
            EditText nameField = (EditText) findViewById(R.id.Barcode);
            String name = nameField.getText().toString();
            nameField.setTag(a);
            if (name.length() == 14 && name.contains("40000")) {
                new AlertDialog.Builder(this).setMessage(
                        R.string.msgBarcode).setNeutralButton(
                        R.string.error_ok,
                        null).show();
                //nameField.setText("Bla Bla!");
                return;
                
            }
            else{
                new AlertDialog.Builder(this).setMessage(
                        R.string.erBarcode).setNeutralButton(
                        R.string.error_ok,
                        null).show();
                return;
            }
            
        }
    
    }
    
     
  12. swordi, 21.02.2012 #12
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    du startest im onclick einen scan

    danach machst irgendwas mit dem edittext

    im onactivityresult speicherst dir das scanresult

    damit machst dann aber nichts mehr. Onactivityresult ist der punkt, an dem das scan resultat dann bekannt ist.
     
  13. adriax, 21.02.2012 #13
    adriax

    adriax Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    0
    Registriert seit:
    20.02.2012
    wo setz ich denn dann ein, dass der Edittext den Inhalt von scanresult haben soll?


    ps. tut mir leid falls ich mich grad iwie dumm bzw. unwissend anstelle.... ich verzweifle hier nur langsam...
     
  14. swordi, 21.02.2012 #14
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    naja betrachte die abfolge mal logisch

    die machst einen klick auf einen button und setzt danach direkt das resultat - das kann nicht funktionieren, da ja zuerst mal der scanner gestartet werden muss.

    wenn du im Onactivityresult das scan resultat bekommst ( wie ja auch deine member variable heißt ) dann ist das eher der richtige punkt, um da etwas zu setzen.
     
  15. adriax, 21.02.2012 #15
    adriax

    adriax Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    0
    Registriert seit:
    20.02.2012
    also sollte ich das "nameField.setTag(scanResult);" in die OnActivityResult setzen, aber ".setTag()" tut ja nicht das gleich wie setText oder?

    also folglich so:

    Code:
    package My.barcodeerfassung;
    
    
    
    
    
    import com.google.zxing.integration.android.IntentIntegrator;
    import com.google.zxing.integration.android.IntentResult;
    
    import android.app.Activity;
    import android.content.Intent;
    
    import android.os.Bundle;
    
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    
    
    
    
    public class BarcodeerfassungActivity extends Activity
          implements OnClickListener {
     
        private Button Test;
        private Button Scan;
        private IntentResult a;
    
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            Test = (Button) findViewById(R.id.Test);
            Test.setOnClickListener(this);
            Scan = (Button) findViewById(R.id.scan);
            Scan.setOnClickListener(this);
        }
        public void onActivityResult(int requestCode, int resultCode, Intent intent) {
              IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
              EditText nameField = (EditText) findViewById(R.id.Barcode);
              String name = nameField.getText().toString();
              if (scanResult != null) {
                  nameField.setTag(scanResult);
              }
              // else continue with any other code you need in the method
        }
        public void onClick(View v) {
    
            IntentIntegrator integrator = new IntentIntegrator(this);
            integrator.initiateScan();
            
            
            
            //if (name.length() == 14 && name.contains("40000")) {
            //    new AlertDialog.Builder(this).setMessage(
            //            R.string.msgBarcode).setNeutralButton(
            //            R.string.error_ok,
            //            null).show();
            //    //nameField.setText("Bla Bla!");
            //    return;
                
            //}
            //else{
            //    new AlertDialog.Builder(this).setMessage(
            //            R.string.erBarcode).setNeutralButton(
            //            R.string.error_ok,
            //            null).show();
            //   return;
            //}
            
        }
    
    }
    
     
    Zuletzt bearbeitet: 23.02.2012
  16. Tom299, 21.02.2012 #16
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    Ich hab mir das auch mal angeschaut und zum Laufen gebracht. Hab das android-Projekt in Eclipse hinzugefügt und als externe JAR dort die core.jar hinzugefügt. IntentIntegrator und IntentResult hab ich dann in mein eigenes Projekt kopiert.

    Der Aufruf geht dann mittels:
    Code:
    // Test Barcode Scanner
    IntentIntegrator integrator = new IntentIntegrator(this);
    integrator.initiateScan();
    
    Und das Ergebnis in onActivityResult:
    Code:
        	else if (requestCode == IntentIntegrator.REQUEST_CODE) {
        		if (resultCode == Activity.RESULT_OK) {
        			IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
        			if (scanResult != null) {
        				System.out.println(scanResult.toString());
        				System.out.println(scanResult.getContents());
        			}
        		}
        	}
    
    Weiß nicht, ob das so richtig ist, aber es funktioniert :)
     
  17. swordi, 21.02.2012 #17
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    tja wenns funktioniert, dann ists schonmal "richtiger" als deine erste lösung :D
     
  18. Tom299, 22.02.2012 #18
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    das war meine 1. lösung, bin ja nicht der te ;-)
     
    adriax bedankt sich.
  19. adriax, 22.02.2012 #19
    adriax

    adriax Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    50
    Erhaltene Danke:
    0
    Registriert seit:
    20.02.2012
    hey leute,

    danke habs jetzt hinbekommen mit
    Code:
              if (scanResult != null) {
                  nameField.setText(scanResult.getContents());
              }
    hab aber dennoch ne Frage unzwar habe ich zwei Buttons, wie kann ich denen verschieden onClick zuweisen?
     
  20. swordi, 22.02.2012 #20
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    hmm wie wärs mit zuerst java lernen ?

    clicklistener ist das zauberwort
     
    adriax bedankt sich.

Diese Seite empfehlen