2014-02-24 5 views
0

코드바에서 응용 프로그램을 개발 중이지만 Zxing의 바코드 스캐너가 열리고 닫힙니다. 스캔/종료 버튼과 닫기 버튼을 추가해야하는 제품을 스캔 한 후 자동으로 스캐너가 열리거나 닫히지 않아야합니다. 또한 스캔 된 제품이 데이터베이스 (SQL SERVER)에 있는지 확인하고 제품 정보를 반환해야하지만 Google에 도움을 요청했지만 도움을 요청할 필요가 있습니다. 다음은 Eclipse 코드입니다. 내가 UI를 수정할 수있는 내 ZXING 바코드 스캐너 플러그인의 내 컨트롤을 추가 할 수있는 방법을 알고 싶습니다. 이클립스에서 개발 중이며 IIS에서 호스팅되는 웹 API 서비스를 사용하여 안드로이드 앱에 액세스 할 수 있습니다. 최대한 빨리 수행하십시오. 내 바코드 UI를 수정하여 내 컨트롤을 추가 할 수 있습니다.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); 
} 

그래서

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"); 
     } 
    } 
} 

알려주세요 ... 결과에 대한 내 onStartActivity에 서버 측에 그 정보를 전송하고 나는 대답을 기다리는 경우이 도움이 당신에게

+0

나는 이미 거기 있던 나의 부호를 배치하고 배치했다 그러나 아직도 작동하지 않는다 –

+0

늦은 대답을 위해 유감스러운 ... 그래서 아직도 동일한 일을하고있다 .. 그것은 스캐너를 열고 inmediatly를 닫는다 ... 다른 QR 스캐너를 사용하려고 ... QR 드로이드를 사용하는 것이 좋습니다 – geekCode

+0

QR 드로이드는 ZXIng보다 잘 작동합니까? –

0

UPDATE : 방금 ​​Zxing 대신 Zbar를 사용하기 시작했습니다. 함께 일하는 것이 훨씬 쉽습니다. 매우 쉽게 삽입 할 수 있습니다 (스캐너 용 타사 앱 없음). 프로젝트에 많은 파일을로드 할 수 있습니다. 또한 코드에 거의 복사하여 붙여 넣을 수있는 예제가 포함되어 있습니다. 이 예제는 수행하려는 작업에 적합하며 원하는 기능을 얻기 위해 약간의 수정 만 필요합니다. 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 문제에 다소 도움이 될 수도 있습니다. 데이터베이스 도우미를 설정 했습니까? 먼저 Google을 검색하여 데이터베이스를 설정하는 간단한 데이터베이스 예제를 찾으십시오. 저기 안드로이드에 대한 SQLite에서 데이터베이스를 설정하는 방법을 보여주는 좋은 것들이 많이 있습니다. 제가 기본의 일부를 익히기 위해 사용했던 것 : http://hmkcode.com/android-simple-sqlite-database-tutorial/. 책의 예를 사용하여 필요에 맞는 컬럼 값의 모든 상품 클래스를 작성할 수 있습니다. 그런 다음 이클립스로 자동 게터와 세터를 간단히 생성하십시오. "소스 -> 게터와 세터 생성"을 클릭하십시오. 수행 한 작업은 아래의 자습서를 사용하여 qr 스캐너를 설정할 수 있습니다. 창문을 열어 두는 것에 관해서는, 나는 당신이 그렇게 할 필요가 없다고 생각합니다. 스캐너가 닫히는 활동을 만드십시오. 그러한 활동에서 출력물을 가져올 수 있고 데이터베이스와 비교하여 스캔 결과를 얻을 수 있습니다.

내 응용 프로그램에 zxing을 통합하기 위해 http://%20http://code.tutsplus.com/tutorials/android-sdk-create-a-barcode-reader--mobile-17162 자습서를 사용할 수있었습니다.

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(); 
    } 
} 

먼저 스캔 전화 : 나는

는 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); 


       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의 결과를 사용하고 DB 결과를 호출하여 비교하는 방법을 보여줍니다. 바라기를 그 도움이