2013-01-02 3 views
1

ZXING 라이브러리를 사용하여 QR 코드로 문자열을 인코딩하려고합니다. 이것은이에 해당하는 코드 라인이다 : 나는이 일부 웹 사이트에서 찾고 후ZXING을 사용하여 QRCode로 인코딩하십시오.

을 "강제 종료"이 버튼을 클릭하면

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

    btn = (Button)findViewById(R.id.button1); 
    btn.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent("com.google.zxing.client.android.ENCODE"); 
      intent.addCategory(Intent.CATEGORY_DEFAULT); 
      intent.putExtra("ENCODE_TYPE", "TEXT_TYPE"); 
      intent.putExtra("ENCODE_DATA","HELLO WORLD"); 
      startActivityForResult(intent, 0); 

     } 
    }); 
} 

, 우리는 그냥이 선으로 작동하는지 말한다. 불행하게도, 그것은 나를 위해 isnt하다.

제발 알려 주시면 작동하도록 조언 해드릴 수 있습니까? 또는 QRCode 생성기를 내 Android 용 앱에 통합하는 다른 방법이 있다면 좋을 것입니다.

+2

일부 로그를 추가 할 수 있습니까? –

+0

사용중인 장치에 바코드 스캐너가 설치되어 있습니까? – FoamyGuy

+0

에뮬레이터 또는 실제 장치를 사용합니까? –

답변

0

이 줄 :

Intent intent = new Intent("com.google.zxing.client.android.ENCODE"); 

는 의도로 호출활동을 식별합니다. 작동시키기 위해서는 장치에 Activity가 있어야합니다. 프로젝트 내에서 활동을 구현하지 않은 경우 (즉, com.google.zxing.client.android 패키지 내에 클래스 ENCODE이없는 경우) 외부 응용 프로그램을 호출하게됩니다. 장치/에뮬레이터에서 com.google.zxing.client.android.ENCODE에 대한 브로드 캐스트에 응답하는 응용 프로그램이 없으면 이 솔루션을 사용하여이 될 수 없습니다.

com.google.zxing.client.android.ENCODE에 응답하는 응용 프로그램을 설치하거나 다른 방법을 찾아야합니다.

그것은 에 가능한 응용 프로그램 내에서 zxing 라이브러리를 사용하여 바코드 자신를 생성합니다. 다운로드를 위해 Google 코드에서 here 프로젝트를 살펴보십시오. 그러면 외부 응용 프로그램에 대한 종속성이 제거되어보다 철저한 솔루션을 제공합니다.

+0

입니다. 내 장치에 zxing 응용 프로그램을 설치 한 직후에 작업이 시작됩니다. 스캔 할 때 다음 코드 줄을 사용해 보았습니다. 의도 의도 = 새로운 의도 ("com.google.zxing.client.android.SCAN"); 의도입니다.putExtra ("SCAN_MODE", "QR_CODE_MODE"); startActivityForResult (인 텐트, 0); 그리고 내 장치에서 zxing 앱을 사용하지 않고 qrcode를 검색하는 데 적합합니다. 이제 정보를 포함하는 qrcode를 생성해야하는 앱을 개발하고 있습니다. 그래서 zxing 응용 프로그램을 호출 할 필요없이 그것을 할 수있는 방법을 theres 나를 위해 더 좋을 것입니다 – enzo

4

엔조이 그것을 작동하게하는 또 다른 방법은,이 시도 :

private void encode(String uniqueID) { 
     // TODO Auto-generated method stub 
     BarcodeFormat barcodeFormat = BarcodeFormat.QR_CODE; 

      int width0 = 500; 
      int height0 = 500; 

      int colorBack = 0xFF000000; 
      int colorFront = 0xFFFFFFFF; 

      QRCodeWriter writer = new QRCodeWriter(); 
      try 
      { 
       EnumMap<EncodeHintType, Object> hint = new EnumMap<EncodeHintType, Object>(EncodeHintType.class); 
       hint.put(EncodeHintType.CHARACTER_SET, "UTF-8"); 
       BitMatrix bitMatrix = writer.encode(uniqueID, barcodeFormat, width0, height0, hint); 
       int width = bitMatrix.getWidth(); 
       int height = bitMatrix.getHeight(); 
       int[] pixels = new int[width * height]; 
       for (int y = 0; y < height; y++) 
       { 
        int offset = y * width; 
        for (int x = 0; x < width; x++) 
        { 

         pixels[offset + x] = bitMatrix.get(x, y) ? colorBack : colorFront; 
        } 
       } 

       Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); 
       bitmap.setPixels(pixels, 0, width, 0, 0, width, height); 
       ImageView imageview = (ImageView)findViewById(R.id.qrCode); 
       imageview.setImageBitmap(bitmap); 
      } catch (WriterException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
    } 
+0

'colorBack'과'colorFront' 변수의 값은 무엇입니까? – PinoyCoder

+0

int colorBack = 0xFF000000; int colorFront = 0xFFFFFFFF; – Marckaraujo

-1

당신은 또한 아래 텐트를 사용하여 QRCode의에서 문자열을 얻을 수 있습니다 오히려 라이브러리를 Zxing보다 :

try { 
       Intent intent = new Intent("com.google.zxing.client.android.SCAN"); 
       intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); // "PRODUCT_MODE for bar codes 
       startActivityForResult(intent, 0); 
      } catch (Exception e) {  
       Uri marketUri = Uri.parse("market://details?id=com.google.zxing.client.android"); 
       Intent marketIntent = new Intent(Intent.ACTION_VIEW,marketUri); 
       startActivity(marketIntent); 
      } 

그리고 아래와 같은 활동 결과 :

@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"); 
       Log.v("MESSAGE: ", contents); 
       Intent in = new Intent(MainActivity2.this,MainActivity3.class); 
       Bundle b3= new Bundle(); 
       b3.putString("content",contents); 
       in.putExtras(b3); 
       startActivity(in);  

      } 
     } 
    } 

그것은 당신을 위해 도움이 될 수 있습니다.

감사합니다.

관련 문제