2014-02-24 91 views
0

我正在開發Cordova的應用程序,但Zxing的條形碼掃描儀在掃描產品後需要添加掃描/退出按鈕和關閉按鈕時自動打開和關閉掃描儀不應自動打開和關閉。我還需要檢查掃描的產品是否存在於數據庫中(SQL SERVER),並返回產品信息,我試圖谷歌,但無濟於事,請help.the以下是我在Eclipse中的代碼。我需要知道我可以如何修改UI並添加自己的控件來控制我在Eclipse中開發的ZXING條形碼掃描器插件,並在IIS中託管一個Web API服務,我可以訪問我的Android App.Please儘快或告訴我如何我可以修改此條形碼用戶界面以添加我的控件。PhoneGap條碼掃描儀問題

public void scan() { 
    Intent intentScan = new Intent(SCAN_INTENT); 
    intentScan.addCategory(Intent.CATEGORY_DEFAULT); 

    this.cordova.startActivityForResult((CordovaPlugin) this, intentScan, REQUEST_CODE); 
} 

我的OnStartActivity代碼是這裏的代碼,但它看起來像你的一樣。

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    if (requestCode == REQUEST_CODE) { 
     if (resultCode == Activity.RESULT_OK) { 
      JSONObject obj = new JSONObject(); 
      try { 
       obj.put(TEXT, intent.getStringExtra("SCAN_RESULT")); 
       obj.put(FORMAT, intent.getStringExtra("SCAN_RESULT_FORMAT")); 
       obj.put(CANCELLED, false); 
      } catch (JSONException e) { 
       Log.d(LOG_TAG, "This should never happen"); 
      } 
      //this.success(new PluginResult(PluginResult.Status.OK, obj), this.callback); 
      this.callbackContext.success(obj); 
     } else if (resultCode == Activity.RESULT_CANCELED) { 
      JSONObject obj = new JSONObject(); 
      try { 
       obj.put(TEXT, ""); 
       obj.put(FORMAT, ""); 
       obj.put(CANCELLED, true); 
      } catch (JSONException e) { 
       Log.d(LOG_TAG, "This should never happen"); 
      } 
      //this.success(new PluginResult(PluginResult.Status.OK, obj), this.callback); 
      this.callbackContext.success(obj); 
     } else { 
      //this.error(new PluginResult(PluginResult.Status.ERROR), this.callback); 
      this.callbackContext.error("Unexpected error"); 
     } 
    } 
} 

回答

0

下午好,我有一個應用程序,你在找什麼?首先,我創建一個意圖,所以我可以用我爲了使用外部應用程序的任何QR掃描得到的值QR代碼在這裏。

public void scanNow(View view) { 
    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); 
} 

所以在我onStartActivity的結果發送信息到服務器端,我等待的答案...

public void onActivityResult(int requestCode, int resultCode, Intent intent){ 
    if(requestCode == 0){ 
     if(resultCode == RESULT_OK){ 
      contents = intent.getStringExtra("SCAN_RESULT");// here is the content of the qr scanner 
      String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); 
      String messLoc = "Visita Guardada Con Exito"; 
      Log.i("xZing", "contents: " + contents + " format: " + format);// Handle successful scan 
      Toast.makeText(this, messLoc, Toast.LENGTH_LONG).show(); 
      new Thread(new Task()).start(); // here I start the thread for the connection 
      return; 
     } 
     else if(resultCode == RESULT_CANCELED);{// Handle cancel 
     Log.i("xZing", "Cancelled"); 
     } 
    } 
} 

請讓我知道,如果這可以幫助您

+0

我已編輯和張貼我的代碼已經存在,但它仍然不能正常工作 –

+0

對不起,延遲的答覆...所以它仍然在做同樣的事情..它打開掃描儀並關閉inmediatly ...嘗試使用另一個QR掃描儀...我建議你使用QR Droid – geekCode

+0

艾特謝謝你的QR Droid工作比ZXIng更好嗎? –

0

UPDATE : 我剛開始用Zbar代替Zxing。與其合作更容易。非常容易嵌入(掃描儀沒有第三方應用程序)。它有很多讓文件加載到項目中。另外,它有一個包含的例子,你幾乎可以複製並粘貼到你的代碼中。該示例非常適合您正在嘗試執行的操作,只需要進行少量編輯即可獲得您正在查找的功能。所以請嘗試使用zbar庫。 Zbar - https://github.com/dm77/ZBarScanner 一個教程 - http://community.magicsoftware.com/en/library?book=en/Magicxpa/&page=Android_Barcode_Scanning_(Using_ZBar_SDK)_Sample.htm 該教程不是很好,但它有助於設置它。注意:如果點擊它們,它們所具有的鏈接將不起作用。您必須將文本複製並粘貼到瀏覽器中。 我在下面解釋的數據庫內容仍然是相關的,但忽略了關於zxing的部分。

祝你好運!

原始解答 我也許能夠幫你解決一些SQL問題。你有沒有設置數據庫幫助程序? 首先,我會谷歌周圍,找到一個簡單的數據庫示例來設置數據庫。有很多很好的例子說明如何在Android的SQLite中設置數據庫。我曾經學習過的一些基礎知識:http://hmkcode.com/android-simple-sqlite-database-tutorial/。您可以使用Book的示例創建一個產品類,其中包含符合您需求的列的所有值。然後你簡單地使用eclipse創建自動getter和setter,點擊「Source - > generate getters and setters」。一旦你完成了,你可以使用下面的教程來設置你的qr掃描器。至於保持開放的窗口,我不認爲你需要這樣做。只需創建一個掃描器關閉的活動。在這種行爲中,您可以獲得輸出並將掃描結果與數據庫進行比較。

我能夠使用教程http://%20http://code.tutsplus.com/tutorials/android-sdk-create-a-barcode-reader--mobile-17162將zxing整合到我的應用程序中。一旦我做到了

從QR代碼解析數據的一個例子:

首先你調用掃描:

public void onClick(View v){ 
      //respond to clicks 
      if(v.getId()==R.id.scanQRButton){ 
       //scan 
       IntentIntegrator scanIntegrator = new IntentIntegrator(this); 
       scanIntegrator.initiateScan(); 
       Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
       intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 
       startActivityForResult(intent, 0); 

掃描結果代碼則是這樣的:

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    //retrieve scan result 
    IntentResult scanningResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); 



    if (scanningResult != null) { 
     //we have a result 
     scanContent = scanningResult.getContents(); 



    } 
    else{ 
     Toast toast = Toast.makeText(getApplicationContext(), 
      "No scan data received!", Toast.LENGTH_SHORT); 
     toast.show(); 
    } 
} 

現在整理方法爲掃描按鈕:

public void onClick(View v){ 
      //respond to clicks 
      if(v.getId()==R.id.scanQRButton){ 
       //scan 
       IntentIntegrator scanIntegrator = new IntentIntegrator(this); 
       scanIntegrator.initiateScan(); 
       Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
       intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); 
       startActivityForResult(intent, 0); 


       formatTxt.setText("Scan Initiated"); 
       contentTxt.setText(" Scan Results: " + scanContent); 

       if(scanContent != null){ 

        String userid,medname,tabstaken,dob; 

            // Here I am breaking apart the scan results and 
            //saving them into variables. 
          //Do this then call the database for your product and compare 
        StringTokenizer st = new StringTokenizer(scanContent, ","); 
         // token 0 
         dob = st.nextToken(); 
         //token 1 
         medname = st.nextToken(); 
         //token 2 
         tabstaken = st.nextToken(); 
         //token 3 
         //rxnumber 
        // So here you setup the db so you can access it 
        DatabaseHandler db = new DatabaseHandler(getApplicationContext()); 
       //This is used to call the results 
        HashMap<String,String> user = new HashMap<String, String>(); 
          //Use a method such as getProductResults() for your case 
        user = db.getUserDetails(); 
enter code here 

        //An example of me storing the user 
        userid = user.get("uid"); 
        //debug.setText("Userid: "+ userid+ " medname: " + medname + " tabs: " +tabstaken); 

        UserLogEntry userlog = new UserLogEntry(getApplicationContext(),userid,medname,tabstaken); 
        userlog.addUserLog(); 

       } 
      } 
     } 

如果您需要查看我的數據庫課程,請告訴我。很明顯,這不是您需要的確切代碼,但它會告訴您如何使用QR結果並調用數據庫結果進行比較。希望它的幫助