상세 컨텐츠

본문 제목

[안드로이드] 바코드 오픈 소스 ZXing-1.6

Android.. Story

by HeyLee 2011. 3. 29. 23:45

본문


친구놈의 부탁드로 바코드에 대한걸 건드려 보게되었네요.

안드로이드 바코드 인식에는 오픈소스로 되어있는게 있다는걸 작년 4월쯤인가..?

외국에서 오픈소스로 프로젝트가 진행되는걸 들었던적이 있었습니다. 그걸 이제와서 사용해보기는 처음이네요.

ZXing-1.6 는 다음 구글에 오픈소스로 배포하고있습니다.
http://code.google.com/p/zxing/


지원 형식. 
ZXing-1.6을 사용하는 법은 download에서 ZXing-1.6 압축파일(약 60메가 가량) 받습니다.

안드로이드용 ZXing-1.6 test용 앱 포함 된 파일입니다.
여러가지 방법으로 사용할수잇는데
core 폴더에 있는것은 핵심 이미지 디코딩 라이브러리 및 테스트 코드 들이 들어가있습니다.
핵심이라고 할수있는데요..

테스트 하실분은 zxing-1.6\android 를 안드로이드 프로젝트 - 외부소스로 부터로해서 프로젝트를 제작해주시면 됩니다.
(그냥 임폴트로는 안되더군요...)



프로젝트를 만드시면 src쪽과 res쪽에 엄청난 오류를 보실수있습니다.

첫번째로..values/string.xml에서 오류가 많이 뜰텐데요.

아마 여러 다국어 지원하는것에서 오류가 생기는 모양입니다.
정확한 원인은 잘몰르겠습니다.
values-xx라고 생긴 폴더 들이 있을텐데요.

싹 지워버립시다.. 그리고 영어 문장 이상한걸 찾아서 고쳐주면 ok..(어차피 이테스트용 그대로 갓다 쓰지는 않을테니까요)
string.xml에서
<string name="preferences_custom_product_search_summary">Use %s as a placeholder for the product ID, and %f for formatt</string>

이부분에서 아래와 같은 에러가 뜰텐데요.
Multiple substitutions specified in non-positional format; did you mean to add the
1.6버전이 최신SDK와 호환이 안되서 그런거랍니다... http://code.google.com/p/zxing/issues/detail?id=734

결국엔 svn으로 받아서 사용하라는군요.
하지만 그냥 테스트해보실분은 내용중 %s 저 부분 삭제 하고 저장하신후 빌드해서 그냥 돌려보시길 바랍니다.


두번째로 본문에서 많은 오류가 뜹니다. 영상처리를 해주는 핵심 부분이 안들어간 코드들이라서 그렇습니다.

핵심 코어는 core 폴더에 있습니다. 그부분을 복사해서 src폴더에 넣어주셔도 되고..
jar파일로 만들어서 lib에 추가 시켜주셔도 됩니다. (아래에 설명)

svn쓰는 법은 검색해보시면 많이 있을겁니다 ㅇ_ㅇ


core.jar 파일 만드는법.

이 받은 파일을 압축을 풀어 주시고 http://ant.apache.org/bindownload.cgi 에 들어가셔서 ant파일을 다운로드 받습니다.



각 운영체제에 맞게 받으셔서 압축을 풀어주시구요.
컴퓨터 - 환경 변수 path에 압축풀어주신 주소를 등록해줍시다.
ex) G:\apache-ant-1.8.2-bin

CMD창을 실행시켜 줍시다

그리고 cd 명령어를 사용하여. core 폴더에 들어갑시다.

>cd C:\Users\Android\Desktop\ZXing-1.6\zxing-1.6\core
>ant
그리고 ant를 사용하여 jar 파일 로 만들어줍시다.

다음화면이 성공한 모습.



실제로 내 프로젝트에서 적용시키기

11.04.24일 - 공부하다보니 포스팅이 잘못되었다는걸 꺠닫게 되었습니다 아래 내용은
내 프로젝트가 설치된 디바이스에 zxing 프로그램이 설치 되어있어야 하는걸 전제로 깐것입니다. 실제로 내 프로젝트에 zxing를 커스텀하여 사용할려면  아래와 같이 라이브러리를 추가 시킨후 라이브로리를 바탕으로 zxing 인식하는 부분과 카메라 모듈부분들을 전부 구현 해야된다는걸 깨닫게 되었습니다.

좀더 공부해서 다음 포스팅에 구현하는법을 올려보도록하겠습니다.


core.jar을 적용 시킬 프로젝트 lib에 넣어줍니다.
프로젝트 오른쪽 클릭 ->properties ->javaBuild Path에 들어가서서 추가시키시면 됩니다.


다음과 같이 하셧다면 거의 다 끝났습니다.

보통 사용하는 방법은 버튼을 클릭시켜서 activity를 실행 시키고 반환값을 받아서
처리를 하시면 됩니다.(처리는 알아서 자기에 맞게 하시면 되겟죠.)
contents는 바코드  숫자 String 반환값을 가지고 있고 format은 인식된 바코드 형식 입니다.

//바코드 인식화면을 불러오는 코드
 Intent intent = new Intent("com.google.zxing.client.android.SCAN");
 startActivityForResult(intent, 0);


 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
  
  if (requestCode == 0)
  {
   if (resultCode == RESULT_OK)
   {
    String contents = data.getStringExtra("SCAN_RESULT");
    String format = data.getStringExtra("SCAN_RESULT_FORMAT");
    Log.d("test", "barcode : "+contents+" format : "+format);
   }
   else if (resultCode == RESULT_CANCELED)
   {

   }
  }
  }


이렇게 오픈 소스 ZXing-1.6을 사용하여서 바코드 인식을 시켜봤는데 참 쉽죠..?

오늘 포스트는 여기서 마칠게요!.

관련글 더보기

댓글 영역