【问题标题】:Serial scan using Zxing library - android使用 Zxing 库进行串行扫描 - android
【发布时间】:2014-08-06 15:46:09
【问题描述】:

我正在android上开发一个扫描条形码应用程序,我的应用程序很简单,由一个包含一个按钮和一个 textView 的活动组成,它将接收扫描结果..
该应用程序运行良好,但我想要我可以实现原始的串行扫描。因此,在扫描条形码后,我需要保持捕获活动并且应用程序不会返回按钮活动,以便我可以扫描下一个条形码。请问有什么解决办法吗? 这是我的主要 Java 代码:

public class MainActivity extends Activity {
    private Button scan;

@Override
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);

   scan= (Button)findViewById(R.id.btnScan);

   scan.setOnClickListener(new View.OnClickListener() {

       @Override
       public void onClick(View v) {
           // TODO Auto-generated method stub  
           Intent intent = new Intent("com.google.zxing.client.android.SCAN");
           intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE");
           startActivityForResult(intent, 0);
       }
   });
}


public boolean onTouchEvent(final MotionEvent event) {

    IntentIntegrator integrator = new IntentIntegrator();
    integrator.initiateScan(null);

    return true;
    }

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

   super.onActivityResult(requestCode, resultCode, data);
   if (requestCode == 0) {
       if (resultCode == RESULT_OK) {

               String contents = data.getStringExtra("SCAN_RESULT");
               TextView tv = (TextView) findViewById(R.id.scanResult);
               tv.setText(data.getStringExtra("SCAN_RESULT"));//this is the result
       } else 

       if (resultCode == RESULT_CANCELED) {

         // Handle cancel

   } }
}
@Override
public void onConfigurationChanged(Configuration newConfig){        
   super.onConfigurationChanged(newConfig);
}
}

【问题讨论】:

    标签: java android zxing


    【解决方案1】:

    我在进行扫描仪活动时遇到了同样的问题,我发现的解决方案是让我的 mainActivity 扩展 Zxing CaptureActivity,就像这样我覆盖了 handleDecode 并且我避免在不同的活动之间切换(因为你必须这样做获取您的扫描仪结果)。

    无论如何,要在先行扫描后重新启动扫描过程,我调用了该方法

      restartPreviewAfterDelay(0L)
    

    (即CaptureActivity的一个方法)在按钮的onClick函数中。

    看看那个方法,我认为它是你需要的。

    【讨论】:

    • 感谢 Axl 的快速回答,这似乎是解决方案,但 CaptureActivity 是最终类,所以它不能扩展吗?
    • 是的,对不起,这是因为我没有将 Zxing 作为库放在我的代码中,而是我只使用我需要的类来定制他们的代码;)github.com/zxing/zxing/tree/master/android/src/com/google/zxing/…
    • 我在 MainActivity 中重新实现了 restartPreviewAfterDelay ,现在我只需要知道我应该在哪里使用它?在 onClick 方法中?在 OnActivityResult 中?
    • 出于我的目的,我在布局中插入了一个按钮来重新开始预览,就像这样,结果会一直显示在视频上,直到用户决定点击按钮再进行一次扫描。
    【解决方案2】:

    我终于找到了解决方案,我只需在 onActivityResult() 声明中添加此代码

               Intent intent = new Intent("com.google.zxing.client.android.SCAN");
               intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE",              "QR_CODE_MODE");
               startActivityForResult(intent, 0);
    

    因此,扫描完成后,应用程序准备再次扫描,而不是返回 home Activity

    【讨论】:

    • 我们将如何在扫描多个代码后的结果列表。它会从 onActivityResult 或其他地方检索到吗?
    猜你喜欢
    • 2021-04-05
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    相关资源
    最近更新 更多