2012-07-26 42 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代碼生成我只想用隨機的字符串(從一些單詞的哈希標籤),你可以檢查掃描結果。