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' 카테고리의 다른 글
[Android] 커스텀 백그라운드 설정시 백그라운드 색이 바뀌지 않을때 해결법 (0) | 2022.07.27 |
---|---|
[Android] 플레이스토어 업로드 스크린샷 제작 사이트 (0) | 2022.07.24 |
[Android] 상태바 색상 및 글씨색 변경 (0) | 2022.07.17 |
[Android] Splash 사용법과 사용이유 (0) | 2022.07.10 |
[Android] 라디오버튼, 체크박스가 클릭안되는 현상 (0) | 2022.07.10 |
댓글