2012-07-26 43 views
1

晚上好,用作确认代码的QR码

我正在做移动增强现实游戏,我想使用QR码作为游戏的一部分。我想要做的就是自己创建QR码,这些码可以用于密码的目的,以便能够进入游戏的下一个阶段。因此,从这个意义上说,我需要用户能够从街道上的某个位置扫描QR码,并且如果QR码是合适的,则应用程序将继续进行下一个活动,以便继续流动游戏。

我一般都检查了ZXing库,但无法确切知道我是否可以以这种方式使用QR码,所以我决定询问这里是否有人曾经做过/做过类似的事情。任何指向例子的指针将不胜感激。

非常感谢您的帮助, John。

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
     if (requestCode == 0) { 
      TextView tvStatus=(TextView)findViewById(R.id.tvStatus); 
      TextView tvResult=(TextView)findViewById(R.id.tvResult); 



      if (resultCode == RESULT_OK) { 
       tvStatus.setText(intent.getStringExtra("SCAN_RESULT_FORMAT")); 
       tvResult.setText(intent.getStringExtra("SCAN_RESULT")); 

       String a=(intent.getStringExtra("SCAN_RESULT")); 

       if (a=="1") { 
        Button next = (Button) findViewById(R.id.proceed); 

        next.setOnClickListener(new View.OnClickListener() { 

         public void onClick(View view) {     
          Intent myIntent = new Intent(view.getContext(), StoryLine2Part1.class); 
          startActivityForResult(myIntent, 0);        
         } 

        }); 
       } 

      } else if (resultCode == RESULT_CANCELED) { 
      tvStatus.setText("Press a button to start a scan."); 
      tvResult.setText("Scan cancelled."); 
      } 
     } 


     } 
    } 

编辑:

我有这方面的工作(它可以扫描并显示正常但我不能得到,因为不知何故,我不检查解析的字符串正确的值,我后来的检查工作。为了继续。在任何想法可能是错误的?

回答

3

是的,你可以这样做。

启动活动的结果。

 try { 
      Intent intent = xzingHelper.getScanQrCodeIntent(); 
      startActivityForResult(intent, XzingHelper.QR_REQ_CODE); 
     } catch (ActivityNotFoundException e) { 
      Toast.makeText("You need the ZXing 2D BarCode scanner"); 
      Intent playIntent = xzingHelper.getZxingGooglePlayIntent(); 
      startActivity(playIntent); 
      finish(); 
     } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if(requestCode == XzingHelper.QR_REQ_CODE){ 
      if(resultCode == RESULT_OK){ 
       String qrCodeValue = xzingHelper.getScanResult(data); 
       Log.i("Got ZXing result: "+ qrCodeValue); 
       dealWithQrCode(qrCodeValue); // Check if the qr code is for the next level 
      } else 
      if(resultCode == RESULT_CANCELED) { 
       // Cancelled - dont go to next level 
       finish(); 
      } 
     } 
     super.onActivityResult(requestCode, resultCode, data); 
    } 

Helper类,如果他们没有斑马线安装了它会提示他们:

public class XzingHelper { 

    public static final int QR_REQ_CODE = 123; 

    public Intent getScanQrCodeIntent() { 
     Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
     intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 
     intent.putExtra("SAVE_HISTORY", false); 
     intent.putExtra("PROMPT_MESSAGE", "Too dark? Menu > Settings > 'use front light'"); 
     return intent; 
    } 

    public Intent getZxingGooglePlayIntent() { 
     Uri playUri = Uri.parse("market://details?id=com.google.zxing.client.android"); 
     Intent playIntent = new Intent(Intent.ACTION_VIEW, playUri); 
     return playIntent; 
    } 

    public String getScanResult(Intent data) { 
     return data.getStringExtra("SCAN_RESULT"); 
    } 

} 
+0

这似乎是逻辑/有趣的。我将通过一天中的更多细节处理它,并让您知道它是如何发生的。然而,非常感谢输入。非常感谢。 – GGe 2012-07-26 12:09:27

+1

这与基于意图的集成大致相同,但演示提供的集成代码IntentIntegrator的答案当然是首选。 – 2012-07-26 13:06:56

+0

我还没有试过这个代码,但它只是值得一个+1 – Korcholis 2012-07-26 15:52:37

1

我已经使用了斑马线图书馆了,但不是在比赛的事情。你可以用它来通过Intents进行扫描,在我看来这很舒服。你可以在ZXing Wiki找到它的描述。

只需将intent package中的所有课程放入您自己的项目中即可。然后你就可以使用,只要你想启动相机用户扫描条形码下面的代码:

// yourActivity will be "this" if you start this from your activity 
IntentIntegrator integrator = new IntentIntegrator(yourActivity); 
integrator.initiateScan(); 

如果要限制代码类型,应该被扫描,以QR码可以更换最后一行如下:

​​

要处理结果,请在您的活动中重载onActivityResult方法。这将被称为扫描仪返回时,你可以在那里解开你的游戏等级:

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    IntentResult scanResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); 
    if (scanResult != null) { 
     // a code has been scanned, so handle scan result 
    } 
} 

对于QR代码生成我只想用随机的字符串(从一些单词的哈希标签),你可以检查扫描结果。