[英]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,我建議查看這些包:
以及這個堆棧溢出帖子。
我相信,關於如何在活動之間發送數據的問題的一般答案是使用 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.