반응형
안녕하세요
안드로이드로 구동되는 바코드스캐너의 바코드스캔 기능을 구현한 것에 대해서 설명해보겠습니다
워낙에 자료가 없어서 이 블로그를 보시고 이런 것을 구현하는 경우가 있으신 분들은 참고하시면 좋겠습니다
구현할 때 사용한 바코드스캐너의 모델은 M3입니다
요렇게 생겼네요
이제 바코드스캔 구현소스에 대해서 알아보겠습니다
1. 바코드로 스캔을 하게 되면 dispatchKeyEvent란 Event를 타게됩니다
그 중에서 Action은 ACTION_UP 이벤트를 탄 경우 DeviceID, Flags, KeyCode, getSource 등 바코드를 스캔한 경우
Event가 일치할 때 바코드스캔 로직을 타도록 구현하였습니다
바코드 스캔도 마찬가지로 키보드 이벤트와 동일한 이벤트를 타게됩니다
이런 식으로 차별을 두어서 구현을 합니다
1
2
3
4
5
6
7
8
|
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (KeyEvent.ACTION_UP == event.getAction() && event.getDeviceId() == -1 && event.getFlags() == 8 && event.getKeyCode() == 66 && event.getSource() == 257) {
String scan = readFromClipboard();
return false;
}
}
|
cs |
2. 이어서 dispatchKeyEvent에 있는 readFromClipboard()의 역할은 바코드를 스캔하게 되면 클립보드에 스캔한 데이터가 생성이 됩니다
그 생성된 데이터를 string으로 가져오는 메소드입니다
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public String readFromClipboard() {
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
if (clipboard.hasPrimaryClip()) {
ClipDescription description = clipboard.getPrimaryClipDescription();
ClipData data = clipboard.getPrimaryClip();
if (data != null && description != null && description.hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN))
return String.valueOf(data.getItemAt(0).getText());
}
}
return null;
}
|
cs |
여기까지 안드로이드를 사용하는 바코드스캐너의 안드로이드 바코드스캔 소스에 대해서 알아봤습니다
바코드스캐너를 개발하는 분들이라면 참고가 되었으면 좋겠습니다
반응형
그리드형
'프로그래밍 > 안드로이드' 카테고리의 다른 글
[Android Studio] 이미지뷰에는 이미지가 보이는데 APP을 실행하면 보이지 않는 문제 해결 방법 (0) | 2021.04.26 |
---|---|
[Android Studio] 프로젝트 내 전체 소스에서 문자열 찾기 (0) | 2021.04.20 |
[Android Studio] AVD 이미지 위치 변경 (0) | 2021.04.20 |
[Android Studio] 자바에러 java.lang.NullPointerException (no error message) (0) | 2021.04.20 |
APK 배포하기 (0) | 2019.02.28 |