2016-06-05 3 views
1

Ich bin relativ neu in Android Studio. Ich arbeite an einem QR-Code-Scanner. Ich fand diese online und ich arbeite nur mit ihm:Wie speichert man nach dem Scannen die Ergebnisse des QR-Codes?

import android.app.AlertDialog; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 

import com.google.zxing.Result; 
import me.dm7.barcodescanner.zxing.ZXingScannerView; 

public class MainActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler { 
    private ZXingScannerView mScannerView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mScannerView = new ZXingScannerView(this); // Programmatically initialize the scanner view 
     setContentView(mScannerView); 

     mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results. 
     mScannerView.startCamera();   // Start camera 
    } 

    @Override 
    public void onPause() { 
     super.onPause(); 
     mScannerView.stopCamera();   // Stop camera on pause 
    } 

    @Override 
    public void handleResult(Result rawResult) { 
     // Do something with the result here 

     Log.e("handler", rawResult.getText()); // Prints scan results 
     Log.e("handler", rawResult.getBarcodeFormat().toString()); // Prints the scan format (qrcode) 

     // show the scanner result into dialog box. 
     AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setTitle("Scan Result"); 
     builder.setMessage(rawResult.getText()); 
     AlertDialog alert1 = builder.create(); 
     alert1.show(); 


     // If you would like to resume scanning, call this method below: 
     mScannerView.resumeCameraPreview(this); 
    } 
} 

Ich möchte in einer anderen Tätigkeit die Scan-Ergebnisse in einem Listview speichern, aber ich bin nicht sicher, wie das zu bekommen, um zu arbeiten. Ich weiß bereits, wie man eine ListView erstellt, ich möchte nur die Ergebnisse an die nächste Aktivität übergeben können. Ich habe mich schon hier umgesehen, aber nichts gefunden, was geholfen hat. Jede Hilfe würde sehr geschätzt werden. Vielen Dank.

Antwort

0

Von dem, was Sie beschrieben haben, nehme ich an, Sie müssen eine Reihe von Barcodes zusammen/kontinuierlich scannen und sie an die nächste Aktivität, die eine Listenansicht ist, übergeben.

In Ihrer Senderaktivität müssen Sie alle gescannten Ergebnisse in einer HashMap/Arraylist speichern, abhängig von Ihrer Auswahl der Sammlung. Ich erkläre für eine HashMap und wie man sie über Aktivitäten hinweg sendet.

Sender Aktivität:

Intent intent = new Intent(FromActivity.this, ToActivity.class); 
intent.putExtra("SCAN_RESULTS", hashMap); 
startActivity(intent); 

Empfänger Aktivität:

Intent intent = getIntent();  
HashMap<String, String> hashMap = (HashMap<String, String>)  intent.getSerializableExtra("SCAN_RESULTS"); 

Hoffnung, das hilft.

0

Ich war etwas ähnlich, aber mit der Google APIs Vision zu machen, ich bei diesen Paketen suchen empfehlen würde:

  • com.google.android.gms.vision.barcode.Barcode
  • com.google .android.gms.vision.barcode.BarcodeDetector

sowie this stack overflow post.

Ich glaube, die allgemeine Antwort auf Ihre Frage, wie Sie die Daten zwischen Aktivitäten senden, ist die Verwendung eines Intent-Objekts und die Angabe des Elements, das Sie als "Extra" innerhalb dieser Absicht senden möchten.

Intent data = new Intent(getApplicationContext(), MyListViewActivity.class); 
data.putExtra("Barcode", barcodeObject); 
startActivity(data); 

Eine weitere Möglichkeit wäre, Ihre Scan-Aktivität von Ihrer Listview-Aktivität zu starten und die „startActivityForResult“ Methode verwenden.

Intent scanIntent = new Intent(getApplicationContext(), MyScanActivity.class); 
startActivityForResult(scanIntent, "BARCODE_CAPTURE"); 

Dann würden Sie implementieren onActivityResult

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == "BARCODE_CAPTURE") { 
     if(resultCode == CommonStatusCodes.SUCCESS) { 
      if (data != null) { 
       Barcode barcode = data.getParcelableExtra("Barcode"); 
      ... 
      }}}} 

In Ihrer Barcode-Capture-Aktivität, die Sie würden dann die Ergebnisse in einer Intent zurückzukehren.

Intent data = new Intent(); 
data.putExtra("Barcode", barcode); 
setResult(CommonStatusCodes.SUCCESS, data); 
finish(); 
0

können Sie

verwenden
ArrayList<String> listOfBarcodes = new ArrayList<String>(); 
    //whenever you capture a new barcode add it to this list 
    listOfBarcodes.add(currentBarcode); 

    //when you are done adding barcodes call the ListView activity and pass 
    //it the listOfBarcodes as a Serializable. 
    Intent intent = new Intent(getApplicationContext(), ActivityToStart.class); 
    intent.putExtra("Barcodes", listOfBarcodes); 
    startActivity(Intent); 

Dann in diesem Activity haben Sie eine große Liste von Barcodes. Fügen Sie die neuen Barcodes hinzu und aktualisieren Sie die ListView

Intent callingIntent= getIntent(); 
    ArrayList<String> listOfBarcode = callingIntent.getSerializableExtra("Barcodes"); 

    completeList.add(listOfBarcodes); 
    ArrayAdapter<String> aA = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, completeList); 
    ListView lV = (ListView) findViewById(R.id.my_list_id); 
    lV.setAdapter(aA); 
Verwandte Themen