如何使用zxing库获取自定义扫描仪的扫描条形码结果?活动结果不起作用。扫描部分工作正常,并得到结果。但是我没有收到活动结果中的任何数据。如何获得条码扫描器android的活动结果?
public class ScannerActivity extends Activity implements ZXingScannerView.ResultHandler{
ResultHandler resultHandler;
Parameters parameters;
private CaptureManager capture;
private CompoundBarcodeView barcodeScannerView;
private Button switchFlashlightButton;
private ZXingScannerView mScannerView;
BarcodeView test;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_scanner);
Bundle extras = this.getIntent().getExtras();
resultHandler = (ResultHandler) extras.getSerializable("RESULT_HANDLER");
parameters = (Parameters) extras.getSerializable("PARAMETERS");
barcodeScannerView = (CompoundBarcodeView)findViewById(R.id.zxing_barcode_scanner);
this.getIntent().putExtra("Result_handle",resultHandler);
capture = new CaptureManager(this, barcodeScannerView);
capture.initializeFromIntent(getIntent(), savedInstanceState);
capture.decode();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
Log.d("onActivityResult", "onActivityResult: .");
if (resultCode == Activity.RESULT_OK) {
IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent);
String re = scanResult.getContents();
String message = re;
Log.d("onActivityResult", "onActivityResult: ."+ re);
Result handlerResult = new Result(Result.STATUS_SUCCESS, "qrcode", message);
resultHandler.onHandleResult(handlerResult);
this.finish();
}
// else continue with any other code you need in the method
}
@Override
protected void onResume() {
Log.d("onResume", "onResume: .");
super.onResume();
capture.onResume();
}
@Override
protected void onPause() {
Log.d("onPause", "onPause: .");
super.onPause();
capture.onPause();
}
@Override
protected void onDestroy() {
super.onDestroy();
capture.onDestroy();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
Log.d("onSaveInstanceState", "onSaveInstanceState: .");
super.onSaveInstanceState(outState);
capture.onSaveInstanceState(outState);
}
}
你怎么发的结果?请分享您的代码 – 0X0nosugar
这就是结果。但它来自CaptureManager.java类,它是一个库 protected void returnResult(BarcodeResult rawResult){ Intent intent = resultIntent(rawResult,getBarcodeImagePath(rawResult)); activity.setResult(Activity.RESULT_OK,intent); finish(); } https://github.com/journeyapps/zxing-android-embedded/blob/master/zxing-android-embedded/src/com/journeyapps/barcodescanner/CaptureManager.java – jgm
我想知道是否有可能任何冲突,因为你似乎在同一活动中要求和接收结果*。通常ActivityA会“startActivityForResult(ActivityA.this,ActivityB.class);”然后AcitivtyB会(通过“getIntent()”)确定它应该做什么,最后调用“setResult()”和“finish()”。然后最后调用ActivityA的“onActivityResult()”。 – 0X0nosugar