출처1 : http://minutemaid.tistory.com/entry/ZXing-20-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0

출처2 : http://minutemaid.tistory.com/entry/ZXing-20-%EC%BB%A4%EC%8A%A4%ED%84%B0%EB%A7%88%EC%9D%B4%EC%A7%95%ED%95%98%EA%B8%B0-1

출처3 : http://minutemaid.tistory.com/entry/ZXing-20-%EC%BB%A4%EC%8A%A4%ED%8A%B8%EB%A7%88%EC%9D%B4%EC%A7%95%ED%95%98%EA%B8%B0-2

출처4 : http://blog.naver.com/wono77/140116510191



1. Zxing 3.3 버전의 소스를 다운 받는다.

https://github.com/zxing/zxing

2. Zxing Core를 다운로드 받는다. (core-3.3.0.jar 파일, 상위폴더로 가면 다른 버전도 다운 가능)

core-3.3.0.jar


http://repo1.maven.org/maven2/com/google/zxing/core/3.3.0/

3. Eclipse에서 새로운 안드로이드 프로젝트 생성 (반드시 베이스 SDK는 Android SDK 4.4 이상을 선택할 것, 최소 SDK는 14이상이어야 함, 마쉬멜로우(6.0, API 23)부터는 권한체계가 달라지므로 target SDK를 22로(롤리팝) 변경한다.)


4. core-3.3.0.jar 파일을 프로젝트에 추가하고 라이브러리로 등록


5. zxing 폴더의 android\src 이하 파일을 새로 생성한 안드로이드 프로젝트의 src\main\java 밑에 붙여넣기


6. AndroidManifest.xml 파일에 user permission 추가하고

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

 

7.  AndroidManifest.xml 파일에 카메라 사용 activity 추가

<activity android:name="com.google.zxing.client.android.CaptureActivity"
   
android:screenOrientation="landscape"
   
android:clearTaskOnLaunch="true"
   
android:stateNotNeeded="true"
   
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>

 8. src/com.google.zxing.client.android 패키지를 F2키를 눌러서 리팩터링시킨다.

   com.motolies.zxing.client.android 이렇게 이때 두번째에 있는 체크박스를 선택해서 서브패키지명도 같이 바뀌도록한다.


9. res/capture.xml 파일을 열어서 com.google.zxing 으로 된 것들을 com.motolies.zxing 으로 바꿔준다.

   (capture.xml 은 layout-ldpi/ 안에도 있다. 여기도 수정해주자!!)

   중간 중간 빌드하면서 오류나는 부분을 수정해주고, res 폴더 안에 내용들을 추가로 더 프로젝트에 넣어주도록 한다.

   

   

10. src/com.motolies.zxing.client.android/CaptureActivity.java 파일을 열어서 역시 com.motolies.zxing으로 바꿔준다.


11. src/com.motolies.zxing.client.android/Intents.java 파일을 열어서 역시 고쳐준다!! 여기에 좀 많다!!


12. 내 소스로 돌아온다. 내 소스의 Manifest파일을 열어서 activity 부분을 고쳐준다.


   <activity android:name="com.motolies.zxing.client.android.CaptureActivity"<- 이렇게

   <intent-filter> 에 <action android:name="com.motolies.zxing.client.android.SCAN"/> <- 이렇게


13. 내 소스의 startActivity 하는 부분도 고쳐준다.

     Intent intent = new Intent("com.motolies.zxing.client.android.SCAN");

 

14. 이렇게 해서 빌드하고 실행에 성공하면 다른 패키지를 가진 나만의 ZXing 어플이 탄생한다 ^^v


15. ZXing을 통해 카메라를 실행하면 가운데 빨간줄이 표시된다. 일반 바코드의 그것을 형상화해서 만든 것 같은데.. QR코드에는 좀 안어울리기 때문에 없애보도록 하자!!

src/com.motolies.zxing.client.android/ViewfinderView.java 소스를 열어본다.


onDraw 함수안을 들여다보면 주석으로

// Draw a red "laser scanner" line through the middle to show decoding is active  이런 부분이 있다.

그 부분 블럭을 주석처리해주면 빨간줄이 없어진다



16. 실제 사용은 아래와 같은 방법으로 한다.

//    호출하는 부분
protected void onClick_scanBarCode(View view) {
    Intent intent =
new Intent("com.motolies.zxing.client.android.SCAN");
    intent.putExtra(
"SCAN_MODE", "ALL");
    startActivityForResult(intent,
0);
}

//    결과 받는 부분
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   
if (requestCode == 0) {
       
if (resultCode == Activity.RESULT_OK) {
            String contents = data.getStringExtra(
"SCAN_RESULT");
           
//위의 contents 값에 scan result가 들어온다.
           
Toast.makeText(getApplicationContext(), contents, Toast.LENGTH_SHORT).show();
        }
    }
   
super.onActivityResult(requestCode, resultCode, data);
}

 

 






















Posted by motolies

댓글을 달아 주세요