Wie kann ich barcodescanner mit emulator ausführen und testen?

so schaut mein Java file und xml file aus. Natürlich habe ich IntentIntegrator.java und IntentResult.java auch in Projekt

import android.content.Intent;

import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends Activity {
	public static final String EXTRA_BARCODE = "extraBarcode";
	public static final String EXTRA_FORMAT = "extraFormat";

	public boolean mainIsOpen = true;

	private IntentIntegrator mIntentIntegrator;

	public final static String EXTRA_MESSAGE = "com.example.pricescannerapp.MESSAGE";

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

		this.mIntentIntegrator = new IntentIntegrator(this);
		
	}

	public void onClick(View view) {

		this.mIntentIntegrator.initiateScan();

		

	}

	public void showProducts(View view) {
		setContentView(R.layout.products);
		mainIsOpen = false;

	
	}	
	
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {

		if (keyCode == KeyEvent.KEYCODE_BACK && mainIsOpen == false) {
			mainIsOpen = true;
			setContentView(R.layout.activity_main);
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}

	@Override
	public void onActivityResult(int requestCode, int resultCode, Intent intent) {
		IntentResult scanResult = IntentIntegrator.parseActivityResult(
				requestCode, resultCode, intent);
		if (scanResult != null) {
			String barcode;
			String type;
			EditText etBarcode = null;
			EditText etTyp = null;

			barcode = scanResult.getContents();
			if (barcode != null) {
				etBarcode = (EditText) findViewById(R.id.etBarcode);
				etBarcode.setText(barcode);
			} else {

				etBarcode.setText(R.string.result_failed);
			}

			type = scanResult.getFormatName();
			if (type != null) {
				etTyp = (EditText) findViewById(R.id.etType);

				etTyp.setText(type);
			} else {

				etTyp.setText(R.string.result_failed);
			}

			
		}

	}

}

[XML]

<TextView
    android:id="@+id/barcode"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/barcode"
    android:textAppearance="?android:attr/textAppearanceLarge" 
     />

<EditText
    android:id="@+id/etBarcode"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/barcode_place" />

<TextView
    android:id="@+id/type"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/type"
    android:textAppearance="?android:attr/textAppearanceMedium" />

<EditText
    android:id="@+id/etType"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/type_place" />

<Button
    android:id="@+id/buttonScan"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:onClick="onClick"
    android:text="@string/scanStart" />

 <Button
    android:id="@+id/buttonProdukte"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:onClick="showProducts"
    android:text="@string/showProducts" />

[/XML]

[XML]<?xml version="1.0" encoding="utf-8"?>

<string name="app_name">PriceScannerApp</string>
<string name="action_settings">Settings</string>
<string name="start_scan">Scan product</string>
<string name="result_failed">No barcode found</string>
<string name="save">save</string>
<string name = "barcode">Barcode</string>
<string name = "type">Type</string>
<string name="barcode_place">Barcode</string>
<string name="type_place">Type</string>
<string name="einkauf">Einkauf</string>
<string name = "scanStart">Scan Start</string>
<string name = "showProducts"> Show Products</string>
<string name="title_activity_display_barcode">DisplayBarcode</string>

[/XML]

wenn ich Programm ausführe und auf scan drucken bekomme ich folgende Meldung, wenn ich auf ok Klicke passiert trotzdem nicht. es wird nichts runtergeladen. was kann ich tun?

meine zweite Frage bezieht sich auf diesem Teil vom Code

	public static final String EXTRA_FORMAT = "extraFormat";
	public final static String EXTRA_MESSAGE = "com.example.pricescannerapp.MESSAGE";```

das ist nicht von mir, hat ein Freund von mir empfohlen, aber leider habe ich nicht verstanden wie ich die nutzen kann.

welche Meldung?!

sofern ich ohne Ahnung sehe, gibt es eh nur eine Seite mit Beispielcode dazu im Netz, den hast du anscheinend richtig kopiert

bleibt eher die ‚Hoffnung‘ auf allgemeine Fehler, die ich in der Konfiguration mangels Kenntnisse nicht beurteilen kann,
aber allgemeiner Tipp, der sich an der fehlenden Meldung oben abzeichnet:

messerschaft analysieren was das Programm macht oder nicht macht,
30 Zeilen in onActivityResult() sind 29 zuviel, es reicht zuerst allein System.out.println("ActivityResult-Methode");
oder vergleichbares mit verlässlicher Log-Infrastruktur, die als erstes aufzubauen ist,

ob man das ganze mit anscheinend Indent als Systemklasse aber IntentIntegrator als Sonderklasse unabhängig von der
Aufgabe testen kann weiß ich nicht, aber zumindest wäre es schon wieder ein Informationsbaustein, ob das Programm soweit läuft,
eine Meldung, die nicht fehlen darf :wink:

danach kommt das ScanResult, null oder nicht → da musst du einfach loggen ob es null ist oder nicht, ohne kann man nix schaffen,
wenn null dann gewiss ein Scan-Problem, und ich kann nicht helfen,
(wobei der Quellcode dazu anscheinend offen ist, da kann man vielleicht auch drin etwas loggen…)

für den nicht ganz ausgeschlossenen Fall dass Scan doch funktioniert kann man wieder weiterschauen,
was wird in ‚etBarcode‘ usw. reingeschrieben?

ist natürlich eher nicht zu erwarten dass allein diese Anzeigen kaputt sind, während gleichzeitg im Log, was immer das ist, dieselben Ausgaben fehlerfrei erscheinen,
dennoch alles Schritt für Schritt zu testen, genau festzustellen was geht, was nicht

Danke für deine Antwort. Ich bin nicht so gut in Programmieren und bin am lernen gerade. Meinst du mit Log den Teil von Stoff. in etBarcode wird barocke gespeichert, soll zumindest
im Anhang ist mein Problem. Ich dachte dass ich angehängt hatte.

hast du IntentIntegrator als Quelltext vorliegen wie etwa


?

    AlertDialog.Builder downloadDialog = new AlertDialog.Builder(activity);
    downloadDialog.setTitle(title);
    downloadDialog.setMessage(message);
    downloadDialog.setPositiveButton(buttonYes, new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialogInterface, int i) {
        Uri uri = Uri.parse("market://details?id=" + BS_PACKAGE);
        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
        try {
          activity.startActivity(intent);
        } catch (ActivityNotFoundException anfe) {
          // Hmm, market is not installed
          Log.w(TAG, "Android Market is not installed; cannot install Barcode Scanner");
        }
      }
    });
    downloadDialog.setNegativeButton(buttonNo, new DialogInterface.OnClickListener() {
      @Override
      public void onClick(DialogInterface dialogInterface, int i) {}
    });
    return downloadDialog.show();
  }

auch hier rate ich dann pauschal zur Nachverfolgung, wird die onClick-Methode betreten ja oder nein,
das try könnte noch ein catch einer beliebigen Exception vertragen, Fehler loggen

wie Logging hier funktioniert kann ich nicht sagen, System.out.println() hoffentlich bekannt, kann mir bestens vorstellen dass nicht verfügbar,
in irgendeiner Komponente setzen, wobei viele Log-Meldungen gesehen werden wollen,

vielleicht und immer ein Thema: Meldungen sammeln, statische Liste von Strings, eigene ‘Activity’, was immer das ist,
eigene separate Programmstelle/ ausgabe, welche man ansteuern muss, nur für diese Daten,

edit: die gewünschte ‘App’ ist anscheinend
https://play.google.com/store/apps/details?id=com.google.zxing.client.android&hl=de
oder eine andere Quelle für ‘com.google.zxing.client.android’,
manuell installieren?

edit:
was heißt eigentlich ‘mit emulator’ ?
ohne normal installierte App sieht es wohl düster aus, das kann sich mit einem Emulator anstelle eines echten Systems beißen

edit:

[QUOTE=SlaterB]danach kommt das ScanResult, null oder nicht -> da musst du einfach loggen ob es null ist oder nicht, ohne kann man nix schaffen,
wenn null dann gewiss ein Scan-Problem, und ich kann nicht helfen,
(wobei der Quellcode dazu anscheinend offen ist, da kann man vielleicht auch drin etwas loggen…)
[/QUOTE]
meinst du dass ich etwas unternehmen muss wenn nichts gescannt wird? ist das nicht genug?

			String barcode;
			String type;
			EditText etBarcode = null;
			EditText etTyp = null;

			barcode = scanResult.getContents();
			if (barcode != null) {
				etBarcode = (EditText) findViewById(R.id.etBarcode);
				etBarcode.setText(barcode);
			} else {

				etBarcode.setText(R.string.result_failed);
			}

[QUOTE=SlaterB;99514]edit: die gewünschte ‘App’ ist anscheinend
https://play.google.com/store/apps/d…android&hl=de
oder eine andere Quelle für ‘com.google.zxing.client.android’,
manuell installieren?
[/QUOTE]

ich dachte IntentIntegrator.java klasse ist dafür da damit app aufgefördert wird diese App zu installieren

ich hätte noch eine Frage über Intent. Intent habe ich verstanden wie ein Brief im Leben und wird mit Schlüssel wert Paare Erzeugt und damit der andere Anwendung diese Intent bekommt, kann man mit Schlüssel zugreifen und public static final String EXTRA_BARCODE = “extraBarcode”; kann man EXTRA_BARCODE als Schlüssel definieren?
also mit EXTRA_BARCODE und wert kann man Intent definieren und andere Anwendung hat zugriff durch String message = intent.getStringExtra(MainActivity.EXTRA_BARCODE); ?

[QUOTE=anni80]meinst du dass ich etwas unternehmen muss wenn nichts gescannt wird? ist das nicht genug?
[/quote]
ich meinte, dass du die Zwischenstände protokollieren, loggen solltest, damit man erkennen kann an welcher Stelle es hakt,
kein Eingriff, keine neuen Aktionen außer Notizen zu jedem Schritt, aber ist ja inzwischen ganz anderes Problem, denke ich

ich dachte IntentIntegrator.java klasse ist dafür da damit app aufgefördert wird diese App zu installieren

macht sie doch auch, nur ist das womöglich für ein normales System gedacht, in der dann die App installiert werden kann,
ob das auch in einem Emulator geht? eine These von mir, keine Aussage,

mehr als das Wort mit seinen 8 Buchstaben hast du zu der Emulator-Situation ja auch noch nicht geschrieben,
ist es alltäglich dort Apps zu installieren, gar von einer anderen App automatisch geladen aus? sicher kaum,
aber hast du auch den Link
emulation - Using a Barcode Scanner on an Android Virtual Device - Stack Overflow
gelesen?

auch gleich noch mitgenommen, für andere sicher besser gedacht:

also mit EXTRA_BARCODE und wert kann man Intent definieren und andere Anwendung hat zugriff durch String message = intent.getStringExtra(MainActivity.EXTRA_BARCODE); ?

klingt überzeugend, aber ich persönlich kann dazu nichts sagen, wie du dir sicher denken kannst :wink:
außer eine weitere allgemeine Weisheit, die Bedienungsanleitung der fraglichen App zu lesen,
vielleicht kann man auch mögliche Keys auflisten/ anschauen?

edit: getExtras() Retrieves a map of extended data from the intent.
→ keySet() Returns a Set containing the Strings used as keys in this Bundle.