android 에서 barcode 인식을 활용한 기능 구현 이야기

android 에서 barcode 인식을 활용한 기능 구현 이야기

반응형

오늘은 barcode 인식을 이용한 앱 구현에 대한 정리를 해 볼까 한다. 이 기능 구현의 시작은 어느 티비에서 방송했던, 어쩌다 사장 이라는 방송에서 출연진들이 원래 가게 주인이 적어든 가격표를 찾아가면서 판매를 하는 것을 보고, 단순한 바코드 인식을 통해 pos 을 구현해 볼 수 있을 까 하는 생각에서 출발한다.

dependencies { ..... implementation 'com.journeyapps:zxing-android-embedded:4.0.0' ..... }

먼저 gradle 파일에 implementation 을 추가한다. 구글링을 통해서 발견한 barcode 인식을 위한 준비라고나 할까 ?

그리고 사용하는 방법은 activity 에서 호출해 주기만 하면 되고, onActivityResult 에서 응답으로 바코드 인식된 값을 돌려 받아 처리 하면 된다. 다음 source code 을 보자.

........ import com.google.zxing.integration.android.IntentIntegrator; import com.google.zxing.integration.android.IntentResult; import java.util.ArrayList; public class MainActivity extends AppCompatActivity { IntentIntegrator integrator; ...... @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ..... binding.btnQRscan.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { integrator = new IntentIntegrator(MainActivity.this); //바코드 안의 텍스트 integrator.setPrompt(getString(R.string.msgViewBarCode)); //바코드 인식시 소리 여부 integrator.setBeepEnabled(false); integrator.setBarcodeImageEnabled(true); integrator.setCaptureActivity(CaptureActivity.class); //바코드 스캐너 시작 integrator.initiateScan(); } }); ...... onDispData(strMode, productNameValue); } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); if(result != null){ if(result.getContents() == null){ // 바코드 인식이 안된 경우의 처리 doHandwork("") ; }else{ //barcode 코드를 읽어서 EditText에 입력해줍니다. binding.et.setText(result.getContents()); ..... KakaoToast.makeToast(this, "Scanned: " + result.getContents(), Toast.LENGTH_SHORT).show(); } }else{ super.onActivityResult(requestCode, resultCode, data); } } ..... }

전체 소스 중에서 바코드 처리 부분만 남겼는데, 버튼 클릭으로 barcode 인식 activity 을 호출 하고 응답이 돌아오면 그 값을 edittext 에 넣어주는 것으로 처리를 남겼다. source 에서 보면integrator.setPrompt(getString(R.string.msgViewBarCode)); 을 통해서 바코드 인식하는 화면에 메시지를 넣어준 것으로 볼 수 있을 것이다.

이런 예시 화면 처럼 화면에 메시지를 보여줌으로 해서 사용자에게 동작을 인식시키는 기능도 구현이 가능 하다.

바코드 인식부의 중간에는 기준선이 빨간색으로 표시 되어 있어 사용이 수월하게 진행 될 수 있다.

source code 을 보면 barcode 사용을 위해서 integrator.setCaptureActivity(CaptureActivity.class); 처럼 activity을 호출 하는데, 여기 명시된 CaptureActivity 는 내가 작성한 것이 아니고,

gradle 에서 선언한 com.journeyapps:zxing-android-embedded:4.0.0 이 안에 들어 있는 class 이므로 찾으려고 노력하지 않아도 된다.

다른 화면들을 보면 이렇게 구동을 확인해 볼 수 있다.

이렇게 해서 구현된 앱은 참고로

https://play.google.com/store/apps/details?id=com.billcoreatech.boss0426

playstore 에서도 확인해 볼 수 있다.

반응형

from http://billcorea.tistory.com/61 by ccl(A) rewrite - 2021-09-08 22:27:09