안드로이드 PDA를 개발중에 있습니다. (M3사의 SM10입니다.)
장비에 스캐너가 따로 달려있어서 QR코드를 스캔하여 사용하고 있습니다.
이 QR코드 스캔 방식이 EditText가 있어야지 가능합니다. 이쪽으로 포지션이 잡히고 스캔을 하면
EditText에 값이 입력이 되면서 값을 받아오는 형식입니다. 흔히 키보드 엣지 방식이라고 하더군요.
여기서 문제가 있습니다.
QR코드를 스캔해야하는데 10자리 QR코드면 문제가 없습니다. 그러나 저는 100자리 QR코드를 사용하고 있어서 이 코드를 스캔하면 입력받는데 까지 시간이 오래 걸립니다.(엔터까지 받는 걸로 되어 있어서...)
저는 100자리중 10자리만 사용하면 되는 거라 setOnKeyListener 이벤트에서 엔터 대신 10자리까지 받고 나머지는 입력취소를 할 수 있는 기능을 구현하고 싶습니다.
간단히 요약하자면 100자리 QR코드를 스캔하면 값을 받아오는데 10자리가 되면 그 뒤 나머지는 입력이 취소가 되면서 이벤트종료를 시키고 싶습니다.
아래 내용은 일반적인 엔터처리 setOnKeyListener 이벤트를 사용한 것입니다.
설명이 난잡한건가 싶긴하지만 도움을 요청드립니다.
//바코드 처리
barcode_Check.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
//Enter key Action
if (keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_UP) {
barcodeSave = barcode_Check.getText().toString().replace("\n", "");
barcode_Check.setText(null);//텍스트박스 지우기
//자판 감추기
InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0); //hide keyboard
Log.v("테스트:", "data : " + barcodeSave);
return true;
}
return false;
}
});