2026/02/16

오늘의 이야기










오늘은 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 



 


우연히 사장 - Google Play 앱


우연히 사장이 되신 분들의 건투를 빌며.


play.google.com




 


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


 





반응형
























댓글 없음:

댓글 쓰기

오늘의 이야기

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