1. Nimm jetzt an unserem Geotel Note - Gewinnspiel teil - Informationen zum Note findest Du hier!
  1. adriax, 20.02.2012 #1
    adriax

    adriax Threadstarter Android-Hilfe.de Mitglied

    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

    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

    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

    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

    wie integriere den code den?
     
  6. the_alien, 20.02.2012 #6
  7. swordi, 20.02.2012 #7
    swordi

    swordi Gewerbliches Mitglied

    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

    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

    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

    keiner kann hellsehen hier.

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

    adriax Threadstarter Android-Hilfe.de Mitglied

    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

    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

    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

    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

    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

    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

    tja wenns funktioniert, dann ists schonmal "richtiger" als deine erste lösung :D
     
  18. Tom299, 22.02.2012 #18
    Tom299

    Tom299 Android-Experte

    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

    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

    hmm wie wärs mit zuerst java lernen ?

    clicklistener ist das zauberwort
     
    adriax bedankt sich.

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. barcodescanner app