항상 도움만 받다가 처음으로 글을 올리네요.
주로 개인 블로그에 생각날때마다 남겨놓곤 했는데,
이번엔 나름 외부 라이브러리 사용하는데에도 도움이 되실 듯 해서 펍에 올려봅니다.
공개 소스인 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 는 생성되지 않습니다.
이제. ZXing 을 Linbrary 로 등록했으니 사용만 하면 됩니다.
4. 간단한 Android Project 를 생성합니다. (이하 QRCodeTest)
- 샘플 : QRCode_ZXingLib.zip
5. 생성한 project 속성에서 ZXing 를 사용하도록 설정합니다.
- Library 에서 Add 하셔서 ZXingLib 를 선택하시면 됩니다.
- 주의 : ZXingLib 가 open porject 상태여야 합니다.
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 로 등록해서 쓸 수 있는 방법 아시는 분 계시면 공유 부탁드려요..