오늘은 barcode 인식을 이용한 앱 구현에 대한 정리를 해 볼까 한다. 이 기능 구현의 시작은 어느 티비에서 방송했던, 어쩌다 사장 이라는 방송에서 출연진들이 원래 가게 주인이 적어든 가격표를 찾아가면서 판매를 하는 것을 보고, 단순한 바코드 인식을 통해 pos 을 구현해 볼 수 있을 까 하는 생각에서 출발한다.
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());
전체 소스 중에서 바코드 처리 부분만 남겼는데, 버튼 클릭으로 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 {
아무래도 휴대폰에 앱을 개발하는 일이다 보니, 문자 전송 같은 기본 기능을 이용하는 앱을 개발하는 일이 많기는 하다. 요새는 카카오톡등을 이용하거나, FCM 등을 이용해서 알림을 보내는 기능등을 구현해 보지만, 예전 방식 처럼 SMS 을 전송해 보는 것도 오랜만 이기는 하다.
구글이 계정 정책등으로 인해 앱을 등록할 때 기본앱으로 사용할 수 없는 SMS 앱은 등록에 무리가 있다. 그래서 그냥 개인적으로 사용하기 위해서 기본앱 기능은 아니지만, 필요에 의한 문자 전송을 구현하는 앱을 만들어 볼 까 싶다.
앱을 만들다 보면 listview 혹인 recyclelistview 등을 사용할 일이 있다. 그런데, 그 안에 있는 item 으로 checkbox, button 등을 넣어 화면을 구성해 보면 (focus 가 도달하는 것들) listview 의 item click 이 제어되지 않고 그 안에 있는 checkbox나 button 등이 클릭 되는 현상을 보인다.
이럴 떄 어떻게 하면 listview 의 item 으로 제어를 옮길 수 있는 것인가에 대한 고민이 생긴다.
개발자 이름, 이메일 주소 , 연락처 전화번호 등등을 입력하고 약관은 체크를 하고 진행 해야 한다. 요새는 워낙 세상이 흉흉하니 가급적이면 구글계정으로 이메일 계정을 하나 만들어 사용하는 것이 좋지 않을 까 하는 생각을 했다. 개인적으로 사용하지 않는 일하는 계정이 좋을 듯 하고, 전화번호도 가급적이면 개인폰 번호 보다는 안심번호를 얻어서 사용하는 것이 좋을 것 같다. 안심번호를 얻는 방법은 크몽 사이트에서 개발자로 등록하면 안심번호가 부여 된다.
오늘은 내가 만든 앱에 광고를 달아보자... admob 으로 다가... 그래서 먼저 할 꺼는 admob 에 로그인하고 앱 만들기를 클릭하기
그럼 다음 그림과 같이 나옴.
나의 앱은 안드로이드 버전이고, 아직 스토어에 등록이 되지 않았다고 선택 - 그리고 계속 하기... 그전에 앱을 스토어에 등록하고 나서 승인도 받아야 정상적으로 광고가 게시될 것 같으니, 그전까지는 테스트 광고만 게시하는 것으로 해야 할 것 같음. 계속을 클릭 하면 다음과 같이 나옴.
앱 이름을 입력하고 - 앱 추가 버튼 클릭
등록이 되었다네요... 그럼 이제 뭘 해야 하지... 일단 광고 단위를 추가해야 한다. 그래야 앱이 광고를 실행할 수 있으니까.
종류가 많기도 해라... 아무튼 오늘은 처음이니 배너 광고를 선택하고 진행을 해 볼 예정이다.
광고단위 만들기 버튼을 클릭하면 다음과 같이 App ID 와 banner ID 가 나타난다.
위에서 보여주는 ca... 로 되어 있는 것들을 일단, 내 프로젝트의 strings.xml 에 추가 하자. 위에 있는 것은 (내용중에 ~ 표시가 있다) AppId 에 넣고, 아래 꺼(내용중에 / 표시가 있음)는 bannerId 에 넣어준다. 그리고 테스트를 위해서 testId 을 추가한다.
아직은 우리의 앱이 스토어에 등록이 되지 않았기 때문에 adUnitId 에는 위에서 저장한 testId 을 이용해서 테스트를 진행해야 한다. 구글은 광고가 들어간 앱을 작성자가 클릭하는 것을 싫어하고 제재를 할 수 있기 때문에 테스트 단계에서는 반드시 testId을 사용할 것을 권고하고 있다. 이번에는 MainActivity 에서 아래와 같이 광고를 게재 하면 된다.
#스하리1000명프로젝트, Bazen yabancı işçilerle konuşmak zor oluyor, değil mi? Yardımcı olacak basit bir uygulama yaptım! Siz kendi dilinizde yazarsınız ve başkaları da bunu kendi dillerinde görür. Ayarlara göre otomatik çeviri yapar. Kolay sohbetler için son derece kullanışlı. Fırsat bulduğunda bir göz at! https://play.google.com/store/apps/details?id=com.billcoreatech.multichat416