barcode
Contents
barcode 은 HSP 에서 확장 라이브러리로 제공하는 API 로 aar 라이브러리 파일과 build.gradle 파일을 수정하여 사용할 수 있다.
라이브러리 추가 방법은 Android 개발 가이드의 내용을 참조하면 된다.
barcode 은 1차원 또는 2차원 바코드 (QRCode) 를 읽어 값을 반환 하는 기능을 가지고 있으며 Optional 한 기능이므로 사용자가 별도로 개발하여 사용해도 무방하다.
show
show 는 바코드 리더 화면을 출력하며 타깃 환경이 SDK 23 이상이면 Runtime Permission 다이얼로그가 먼저 나타나게 되고 이후 바코드 리더기가 나타나게 되도록 구성되어 있다. 바코드를 띄울때는 BarcodeOptions 를 통해 beep / vibrator / flash 등에 옵션을 조정할 수 있으며 기본 값은 false 이다.
BarcodeOptions Class
public final class BarcodeOptions implements Serializable {
public boolean beep;
public boolean vibrator;
public boolean flash;
}
public boolean beep;
public boolean vibrator;
public boolean flash;
}
BarcodeOptions
필드 | 설명 |
---|---|
beep | 바코드를 인식하였을 때 소리 설정 값 |
vibrator | 바코드를 인식하였을 때 진동 설정 값 |
flash | 바코드 리더 화면 출력 시 후레쉬 설정 값 |
바코드 리더기를 통해 얻은 데이터는 첫번째 인자로 전달한 Activity 의 onActivityResult 를 통해 전달 되며 Request Code 는 DAPBarcode.REQUEST_CODE 이고 Extra 키 값은 DAPBarcode.RESULT_DATA 를 참조하면 된다.
Example
DAPBarcode.show(this@MainActivity, BarcodeOptions(), {
// TODO
}) {
// TODO
}
// TODO
}) {
// TODO
}
DAPBarcode.show(MainActivity.this, new BarcodeOptions(), result -> {
// TODO
}, e -> {
// TODO
});
// TODO
}, e -> {
// TODO
});
기본 Layout
barcode 의 UI Layout 은 hone_barcode_layout.xml 으로 구성되어 있다. 사용자는 이를 App 에 새로 생성해서 아이콘과 같은 UI 요소를 변경할 수 있다.
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"
tools:ignore="Overdraw">
<honemobile.client.barcode.BarcodeView
android:id="@+id/barcode_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:zxing_preview_scaling_strategy="centerCrop"
app:zxing_use_texture_view="true"
/>
<ImageButton
android:id="@+id/back"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/hone_barcode_ic_keyboard_backspace_white_24dp"
tools:ignore="RtlHardcoded"/>
<ImageButton
android:id="@+id/flash"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/hone_viewfinder_button_padding"
android:layout_marginTop="@dimen/hone_viewfinder_button_padding"
android:background="@drawable/hone_barcode_ic_visibility_off_white_24dp"
android:layout_gravity="right"
tools:ignore="RtlHardcoded"/>
<ImageButton
android:id="@+id/album"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/hone_viewfinder_button_padding"
android:layout_marginBottom="@dimen/hone_viewfinder_button_padding"
android:background="@drawable/hone_barcode_ic_apps_white_24dp"
android:layout_gravity="bottom"
tools:ignore="RtlHardcoded"/>
</FrameLayout>
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"
tools:ignore="Overdraw">
<honemobile.client.barcode.BarcodeView
android:id="@+id/barcode_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:zxing_preview_scaling_strategy="centerCrop"
app:zxing_use_texture_view="true"
/>
<ImageButton
android:id="@+id/back"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/hone_barcode_ic_keyboard_backspace_white_24dp"
tools:ignore="RtlHardcoded"/>
<ImageButton
android:id="@+id/flash"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/hone_viewfinder_button_padding"
android:layout_marginTop="@dimen/hone_viewfinder_button_padding"
android:background="@drawable/hone_barcode_ic_visibility_off_white_24dp"
android:layout_gravity="right"
tools:ignore="RtlHardcoded"/>
<ImageButton
android:id="@+id/album"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/hone_viewfinder_button_padding"
android:layout_marginBottom="@dimen/hone_viewfinder_button_padding"
android:background="@drawable/hone_barcode_ic_apps_white_24dp"
android:layout_gravity="bottom"
tools:ignore="RtlHardcoded"/>
</FrameLayout>
Error Code
Code | Cause | Comment |
---|---|---|
E11700 | 파라메터 값이 잘못되어 있을 경우 | |
E11701 | 전달된 액션 값이 알 수 없는 액션일 경우 | |
E11750 | 실행 중 오류가 발생 되었을 경우 | |
E11751 | 바코드 인식 결과 값이 유효하지 않은 경우 | |
E11799 | 알 수 없는 오류가 발생 되었을 경우 | |