woong's

Android Zxing 사용하기 본문

Develop/Android

Android Zxing 사용하기

dlsdnd345 2016. 5. 10. 12:59
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

Android Zxing 사용하기


안녕하세요. 이번에 QR 리더기를 만들어 볼 기회가 있어 포스트를 작성을 통해 정리해 보려 합니다.

이전에 도서 관리 어플을 만들면서 Zxing 을 사용했었는데 .. 그때는 패키지를 몽땅 가져다가 사용해서 에러도

많이 나타나고 커스텀을 해서 사용해서 많이 번거로웠던 기억이 있습니다. 그때 이후로 시간이 2년이상 지나고

버전이 업그레이드되어서 쉽게 접근하는 방법을 찾아보니 역시 있어서 간단하게 정리해 보려 합니다.


Android Zxing 참고 홈페이지


1.준비과정


build.gradle dependencies 를 추가


1
2
compile 'com.journeyapps:zxing-android-embedded:3.2.0@aar'
compile 'com.google.zxing:core:3.2.1'
cs



2.코드작성


위와같이 라이브러리를 추가 후에 바로 코드를 작성 할수 있습니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/**
 * 버튼 클릭 리스너
 */
View.OnClickListener mOnClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
 
        switch (v.getId()){
 
            case R.id.btnQr:
                new IntentIntegrator(getActivity()).initiateScan();
                break;
        }
    }
};
 
 
 
cs


버튼 이벤트를 통해서 바코드 화면을 띄우게 됩니다.




QR코드를 스캔 하면 자동으로 화면이 닫히면서 onActivityResult 를 통해서 데이터 값을 전달해 주게 됩니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Log.e(TAG, ">>> requestCode = " + requestCode + ", resultCode = " + resultCode);
    if (requestCode == IntentIntegrator.REQUEST_CODE) {
 
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
 
        Log.i(TAG, ">>> result.getContents()   :  " + result.getContents());
        Log.i(TAG, ">>> result.getFormatName()   :  " + result.getFormatName());
    }
}
 
cs


여기까지 진행하시면 바코드 리더기를 통해서 데이터를 전달 받을수 있습니다.

저는 가로보다는 세로로 사용하고 싶어서 좀더 찾아보니 세로로 커스터마이징이 가능합니다.


1
2
3
4
public class CaptureActivityAnyOrientation extends CaptureActivity {
 
}
 
cs


빈 Activity 를 만들고 CaptureActivity를 상속 합니다.

후에 Manifast.xml 에 Activity를 추가합니다.


1
2
3
4
5
6
<activity android:name=".CaptureActivityAnyOrientation"
    android:screenOrientation="fullSensor"
    android:stateNotNeeded="true"
    android:theme="@style/zxing_CaptureTheme"
    android:windowSoftInputMode="stateAlwaysHidden"
    />
cs


setCaptureActicity 에 위에서 만든 Acticity 를 넣어주고 OrietationLocked False로 변경하면 세로로도

사용할수 있습니다.


1
2
3
4
IntentIntegrator integrator = new IntentIntegrator(getActivity());
integrator.setCaptureActivity(CaptureActivityAnyOrientation.class);
integrator.setOrientationLocked(false);
integrator.initiateScan();
cs




'Develop > Android' 카테고리의 다른 글

Android 국가별 폴더 분기  (0) 2016.10.10
홈 버튼 오버라이드  (0) 2016.07.14
Android CoordinatorLayout Behavior 사용하기  (0) 2016.03.30
Android Templates 사용하기  (0) 2016.03.30
Android BottomSheetsBehavior 사용하기  (0) 2016.03.15
Comments