프로젝트

zxing(오픈소스)

닉넥임 2013. 7. 22. 13:23
반응형

- QR코드 및 바코드 인식을 하기 위하여 오픈소스인 zxing 을 다운받아 라이브러리를 추가후 사용할수 있다.

https://code.google.com/p/zxing/downloads/list - zxing 다운 받는곳 에서 받아서 사용할수 있으며.

또한 밑의 주소에서 수정된 소스를 사용할수 있다.

http://theeye.pe.kr/entry/QR%EC%BD%94%EB%93%9C%EB%A6%AC%EB%8D%94-ZXing%EC%9D%84-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-%EB%82%B4-%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%EC%96%B4%ED%94%8C%EC%97%90-QR%EC%BD%94%EB%93%9C-%EC%8A%A4%EC%BA%90%EB%84%88-%EB%8F%84%EC%9E%85%ED%95%98%EA%B8%B0

 - 참고 싸이트 아이군의 블로그 참초 !!(첨부파일은 참고싸이트에 있음.)


[ZXING]이라는 정말 잘 만들어진 안드로이드에서도 사용할 수 있는 QR코드/바코드 스캐너가 있습니다. 아이폰에서는 적당히 자유롭게 쓸 수 있지만 안드로이드에서는 Intent라는 좋은(?) 개념때문인지 Barcode Scanner라는 프로그램을 설치하여 그것을 Intent로 호출해 사용하게끔 하고 있더군요.

그리하여 ZXing의 안드로이드 소스를 커스터마이징 해서 그냥 사용할 수 있도록 약간 고쳐보았습니다. 만들어진 소스는 ZXing android + android-integration을 통합하여 제작하였습니다.

사용하시는 방법은 소스코드를 그냥 통채로 올리니 참고하시면 되겟지만 간단하게 기록을 해보겠습니다.

1. AndroidManifest.xml에 다음을 추가합니다.

<activity
 
android:name="com.google.zxing.client.android.CaptureActivity"
 
android:screenOrientation="landscape"
 
android:configChanges="orientation|keyboardHidden"
 
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
 
android:windowSoftInputMode="stateAlwaysHidden">
   
<intent-filter>
     
<action android:name="com.google.zxing.client.android.SCAN"/>
     
<category android:name="android.intent.category.DEFAULT"/>
   
</intent-filter>
</activity>

...


<uses-feature android:name="android.hardware.camera"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.FLASHLIGHT"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>



2. 리소스 파일을 복사합니다. UI를 변경하고 싶을 경우 capture.xml을 변경하시면 됩니다.

res/layout/capture.xml
res/layout/ids.xml


3. 스캐너 호출 방법 (android-integration)

// QR코드/바코드 스캐너를 구동합니다.
IntentIntegrator.initiateScan(MainActivity.this);



4. 결과 처리 방법

protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
 
// QR코드/바코드를 스캔한 결과 값을 가져옵니다.
 
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
               
 
// 결과값 출력
 
new AlertDialog.Builder(this)
 
.setTitle(R.string.app_name)
 
.setMessage(result.getContents() + " [" + result.getFormatName() + "]")
 
.setPositiveButton("확인", new DialogInterface.OnClickListener()
 
{
   
@Override
   
public void onClick(DialogInterface dialog, int which)
   
{
      dialog
.dismiss();
   
}
 
})
 
.show();
}


반응형

'프로젝트' 카테고리의 다른 글

AJAX(수정요망)  (0) 2013.07.22
소스 분석 2) Json파서를 이용하여 값읽어오기.  (0) 2013.07.22
소스 분석 1) Android 에서의 HttpClient  (0) 2013.07.22
개요  (0) 2013.07.22