簡體   English   中英

掃描后如何存儲二維碼的結果?

[英]How to store results from QR Code after scanning?

我對 Android Studio 比較陌生。 我正在研究二維碼掃描儀。 我在網上找到了這個,我正在使用它:

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);
    }
}

我想將掃描結果存儲在另一個活動的 ListView 中,但我不確定如何讓它工作。 我已經知道如何創建 ListView,我只想能夠將結果傳遞給下一個活動。 我已經在這里環顧四周,但沒有找到任何幫助。 任何幫助將不勝感激。 非常感謝。

根據您的描述,我假設您必須一起/連續掃描一堆條形碼並將它們傳遞給下一個活動,即列表視圖。

在您的發件人活動中,您需要將所有掃描結果存儲在 HashMap/Arraylist 中,具體取決於您選擇的 Collection。 我正在解釋 HashMap 以及如何跨活動發送它。

發件人活動:

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

接收器活動:

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

希望這可以幫助。

我正在做類似的事情,但使用谷歌視覺 API,我建議查看這些包:

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

以及這個堆棧溢出帖子

我相信,關於如何在活動之間發送數據的問題的一般答案是使用 Intent 對象並將要發送的項目指定為該意圖中的“額外”。

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

另一種選擇是從 ListView 活動開始掃描活動並使用“startActivityForResult”方法。

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

然后你會實現 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");
             ...
            }}}}

然后,在您的條形碼捕獲活動中,您將在 Intent 中返回結果。

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

您可以使用

   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);

然后在那個Activity中,您將有一個大的條形碼列表 向其中添加新的條形碼並刷新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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM