오늘은 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 는 내가 작성한 것이 아니고,
(2021.09.09 수정) gradle 에서 선언한 com.journeyapps:zxing-android-embedded:4.0.0 이 안에 들어 있는 class 인데, 이것을 다시 정의하는 클래스만 을 선언 하면 된다.
public class CaptureActivity extends com.journeyapps.barcodescanner.CaptureActivity {
}
완전 깔금 하지 않은가 ...
다른 화면들을 보면 이렇게 구동을 확인해 볼 수 있다.
이렇게 해서 구현된 앱은 참고로
https://play.google.com/store/apps/details?id=com.billcoreatech.boss0426
playstore 에서도 확인해 볼 수 있다.
'모바일 앱(안드로이드)' 카테고리의 다른 글
안드로이드 스튜디오 에서 주석 처리 하고 싶으데... 이상한 문자만 나온다. (2) | 2021.09.21 |
---|---|
안드로이드 디버깅 을 wifi 로 해 보기 (24) | 2021.09.11 |
안드로이드 앱 만들기 문자 한번에 보내기는 어떻게 ? (15) | 2021.09.06 |
안드로이드 앱 만들기 도전 5일차 구글 플레이스토어 앱 등록 (54) | 2021.09.01 |
안드로이드 앱 만들기 list view 에 checkbox 넣어보기 (2) | 2021.08.29 |