안드로이드 - 바코드 생성

2127 단어
주요한 사고방식
  • 1.Zxing 패키지를 가져오고 패키지 MultiFormatWriter 클래스에 따라 문자열의 폭을 높여 일정 시간 동안 x, y 편이량을 계산하여 대응하는 흑백 그림을 생성합니다

  • 1. 클라이언트 코드
    Button generateQRCodeButton = (Button) this
              .findViewById(R.id.btn_add_qrcode);
     generateQRCodeButton.setOnClickListener(new OnClickListener(){
        @Override
       public void onClick(View view) {
               String contentString = qrStrEditText.getText().toString();
               if (!contentString.equals("")) {
                    //                    ,           (350*350)
                    Bitmap qrCodeBitmap=null;
                    qrCodeBitmap= BarcodeCreater.creatBarcode(contentString, 120, 60);
                    bg.setImageBitmap(qrCodeBitmap); 
                } else {
                   Toast.makeText(MainActivity.this, "Text can not be empty", Toast.LENGTH_SHORT.show();
               }
        }
    

    2. 바코드 생성 코드
    private static final int BLACK = 0xff000000;
    private static final int WHITE = 0xFFFFFFFF; 
    private static BarcodeFormat barcodeFormat= BarcodeFormat.CODE_128;
    public  static Bitmap creatBarcode(String contents, int desiredWidth,int desiredHeight) {
          MultiFormatWriter writer = new MultiFormatWriter();
        BitMatrix result=null;
            try {
                  result = writer.encode(contents, barcodeFormat, desiredWidth,
                          desiredHeight);
            } catch (WriterException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
            }
                int width = result.getWidth();
              int height = result.getHeight();
              int[] pixels = new int[width * height];
              // All are 0, or black, by default
              for (int y = 0; y < height; y++) {
                  int offset = y * width;
                  for (int x = 0; x < width; x++) {
                      pixels[offset + x] = result.get(x, y) ? BLACK : WHITE;
                  }
              }
              Bitmap bitmap = Bitmap.createBitmap(width, height,
                      Bitmap.Config.ARGB_8888);
              bitmap.setPixels(pixels, 0, width, 0, 0, width, height);
              return bitmap;
      }
    

    좋은 웹페이지 즐겨찾기