Barcodescanner

A

adriax

Ambitioniertes Mitglied
0
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
 
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
 
soa wie ich einem EditText etwas übergebe weiß ich nun ;-) nun gehts weiter mit der Barcode Library
 
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
 
wie integriere den code den?
 
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
 
danke für die schnellen antworten :)
ich werd mir das gleich mal ansehen:) falls ich noch fragen dazu habe melde ich mich;-)
 
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.....
 
keiner kann hellsehen hier.

zeig uns bitte deinen code
 
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;
        }
        
    }

}
 
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.
 
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...
 
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.
 
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:
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 :)
 
tja wenns funktioniert, dann ists schonmal "richtiger" als deine erste lösung :D
 
das war meine 1. lösung, bin ja nicht der te ;-)
 
  • Danke
Reaktionen: adriax
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?
 
hmm wie wärs mit zuerst java lernen ?

clicklistener ist das zauberwort
 
  • Danke
Reaktionen: adriax

Ähnliche Themen

MES
Antworten
10
Aufrufe
816
MES
MES
Zurück
Oben Unten