Zxing扫描结果显示新的Activity

时间:2015-01-15 15:35:16

标签: android zxing scanning

我已将Zxing 3.0.1作为库添加到我的项目中我有2个布局:首先我有一个调用Zxing库的 CaptureActivity 的按钮,当 CaptureActivit 时y解码条形码我需要将此代码放在 textView 的第二个布局上。我怎样才能做到这一点?如果有人知道,请写一步一步的手册,因为在和Android初学者一样,并且不知道要编码什么。

我必须把这部分代码 CaptureActivity

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (resultCode == RESULT_OK) {
  if (requestCode == HISTORY_REQUEST_CODE) {

    int itemNumber = intent.getIntExtra(Intents.History.ITEM_NUMBER, -1);
    if (itemNumber >= 0) {
      HistoryItem historyItem = historyManager.buildHistoryItem(itemNumber);
      decodeOrStoreSavedBitmap(null, historyItem.getResult());
    }
  }
}
}

1 个答案:

答案 0 :(得分:1)

Yout必须使用 startActivityForResult 启动CaptureActivity:

startActivityForResult(new Intent(this, CaptureActivity.class), CaptureActivity.REQUEST_CODE);

当Zxing完成解码时(在我的情况下它返回 handleResult(Result rawResult)回调的结果 - 你应该在CaptureActivity里面调用 setResult(RESULT_OK,data) data - 是您解码的捆绑字符串,并调用完成()

@Override
public void handleResult(Result rawResult) {
    Bundle data = new Bundle();
    args.putString(RESULT_KEY, rawResult.getText());
    setResult(RESULT_OK, data);
    finish();
}

在启动CaptureActivity的Activity中,您必须覆盖 onActivityResult(int requestCode,int resultCode,Intent data)回调并处理获取结果 - 在您的情况下 - 更新TextView:

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
   if (requestCode == CaptureActivity.REQUEST_CODE && resultCode == RESULT_OK) {
       youtTextView.post(new Runnable() {
           @Override
           public void run() {
               yourTextView.setText(intent.getStringExtra(RESULT_KEY));
           }
       };
   }
}