항상 도움만 받다가 처음으로 글을 올리네요.

 

주로 개인 블로그에 생각날때마다 남겨놓곤 했는데,

이번엔 나름 외부 라이브러리 사용하는데에도 도움이 되실 듯 해서 펍에 올려봅니다.

 

공개 소스인 ZXing 을 Library 화하여 QRCode 인식 샘플에 포함하여 배포하는 간단한 설명입니다.

 

테스트 : 모토로이(2.2) / 갤2(2.3)

 

1. 안드로이드용 ZXing 소스를 다운로드합니다.

    - 다운로드 : http://code.google.com/p/zxing/downloads/list

    - ZXing-1.7.zip

 

2. 다운로드된 ZXing 을 그대로 사용하기에는 다국어나 리소스에서 문제가 생깁니다.

    일부 리소스는 수정이 필요합니다.

    - 한국어만 지원하시는 경우 첨부파일(ZXingLib1.7.zip ) 을 그대로 사용하시면 됩니다.

 

3. ZXing 을 Library 화 합니다.

    - 이미지 붉은색에 체크만 해주시면 됩니다..(초간단..ㅡㅡ)

    - 주의 : Is Library 에 체크되면 apk 는 생성되지 않습니다.

    ZXingLib.png

 

 

이제. ZXing 을 Linbrary 로 등록했으니 사용만 하면 됩니다.

 

4. 간단한 Android Project 를 생성합니다. (이하 QRCodeTest)

     - 샘플 : QRCode_ZXingLib.zip

 

5. 생성한 project 속성에서 ZXing 를 사용하도록 설정합니다.

    - Library 에서 Add 하셔서 ZXingLib 를 선택하시면 됩니다.

    - 주의 : ZXingLib 가 open porject 상태여야 합니다.

 

QRCode_ZXingLib.png

 

6. QRCodeTest 의 AnroidManifest.xml 에 ZXingLIb 의 activity 와 premission 을 추가합니다.

     - 주의 : ZXingLib 의 R 이 경로가 다르기 때문에, 모두 full package 로 변경해 주셔야 합니다.(샘플 참고)

 

이제 설정은 모두 끝났습니다.

MainActivity 에서 호출해서 쓰기만 하면 됩니다.

 

package com.cjoolsoft.qrcode.zxing.test;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {
 
 private final int ACTIVITY_REQUEST_CODE_QRCODE = 1;
 
 private Button btnQRCode;
 private TextView txtQRcodeResult;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        btnQRCode = (Button) findViewById(R.id.ID_MAIN_BTN_QRCODE);
        btnQRCode.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View v) {
    doExecuteQRCodeReader();
   }
  });
    }
   
    @Override
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  if (resultCode != RESULT_OK) {
   return;
  }

  // QR Code 인식 결과
  if (requestCode == ACTIVITY_REQUEST_CODE_QRCODE) {
   if (txtQRcodeResult == null) {
    txtQRcodeResult = (TextView) findViewById(R.id.ID_MAIN_TXT_QRCODE_RESULT);
   }
   
   txtQRcodeResult.setText(data.getStringExtra("SCAN_RESULT"));
  }
 }
   
    private void doExecuteQRCodeReader() {
  Intent intent = new Intent("com.google.zxing.client.android.SCAN");
  intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
  startActivityForResult(intent, ACTIVITY_REQUEST_CODE_QRCODE);
 }
   
}

 

이상입니다.

 

 

사족 : 처음엔 libs 에 넣고 build path 에 설정하는 방식으로 간단히 할 수 있는 방법을 찾아봤는데, ㅈㅈ

            혹시, 1 ~ 6단계 필요없이 원 소스를 jar 로 묶어서 build path 에서 Library 로 등록해서 쓸 수 있는 방법 아시는 분 계시면 공유 부탁드려요..