본문 바로가기
프로그래밍/Android

[Android] Zxing을 이용해 바코드를 스캔하는 코드(가로, 세로 스캔)

by Youngs_ 2022. 7. 20.
zxing은 기본적으로 가로스캔만을 사용하는데, 아래 코드를 사용하면 세로도 스캔할수있다.
세로로 스캔할때 필요한 코드는 주석을 달아놓겠다.

 

MainActivity.kt

private val childForResult =
        registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
            when (result.resultCode) {
                RESULT_OK -> {
                    Log.d("QR 코드 스캔 성공", result.data?.extras?.getString("SCAN_RESULT").toString())
                    // 스캔한 값을 추출할때는 result.data?.extras?.getString("SCAN_RESULT").toString()를 사용한다.
                }
            }
        }

위 childforResult 변수를 Oncreate()에 만들던 전역변수로 만들던 만든후에 buttonTest버튼을 클릭하면 바코드를 스캔할수있도록 카메라가 열린다.

MainActivity.kt

        binding.buttonTest.setOnClickListener(){

            val integrator = IntentIntegrator(this) //context를 넣어줍니다
            integrator.captureActivity = SubActivity::class.java // 캡쳐시 사용할 액티비티
            integrator.setOrientationLocked(false) // false로 하면 핸드폰 방향에 따라 가로, 세로가 바뀐다.
            integrator.setBarcodeImageEnabled(false) //스캔 된 이미지 가져올 지
            integrator.setBeepEnabled(true)//스캔 시 비프음 ON/OFF
            integrator.setPrompt("스캐너 메시지")//QR 스캐너 하단 메세지 셋팅
            integrator.setDesiredBarcodeFormats(IntentIntegrator.ALL_CODE_TYPES)

            childForResult.launch(integrator.createScanIntent())
            integrator.initiateScan() //초기화
        }

 

 

SubActivity.kt

class SubActivity : CaptureActivity() {
    // 클래스 안에 아무것도 없이 빈클래스로 놔둬도 상관없다.
}

 

manifest.xml

<activity
    android:name=".common.scan.SubActivity"
    android:screenOrientation="fullSensor" // 가로, 세로로 돌아갈수있도록 사용
    android:windowSoftInputMode="adjustPan"/>

 


단순히 스캔만 할것이라면 클래스를 새로 만들지 않고 아래 코드를 사용해도 되지만, 아래 코드를 사용하면 스캔후 실행할 액션을 설정할수없다

val integrator = IntentIntegrator(this) //context를 넣어줍니다
            integrator.initiateScan() //초기화

참고 : https://iw90.tistory.com/276

 

Android Zxing 사용하기

Android Zxing 사용하기 안녕하세요. 이번에 QR 리더기를 만들어 볼 기회가 있어 포스트를 작성을 통해 정리해 보려 합니다. 이전에 도서 관리 어플을 만들면서 Zxing 을 사용했었는데 .. 그때는 패키

iw90.tistory.com

 

댓글