barcode


barcode는 2.6.4 버전 이상 부터 제공되며 해당 라이브러리를 추가하여 사용해야 된다.

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;
}

BarcodeOptions

필드설명
beep바코드를 인식하였을 때 소리 설정 값
vibrator바코드를 인식하였을 때 진동 설정 값
flash바코드 리더 화면 출력 시 후레쉬 설정 값
   

바코드 리더기를 통해 얻은 데이터는 첫번째 인자로 전달한 Activity 의 onActivityResult 를 통해 전달 되며 Request Code 는 DAPBarcode.REQUEST_CODE 이고 Extra 키 값은 DAPBarcode.RESULT_DATA 를 참조하면 된다. 

Example

DAPBarcode.show(this@MainActivity, BarcodeOptions(), {
   // TODO
}) {
   // TODO
}
DAPBarcode.show(MainActivity.this, new BarcodeOptions(), result -> {
       // 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>

Error Code

CodeCauseComment
E11700파라메터 값이 잘못되어 있을 경우 
E11701전달된 액션 값이 알 수 없는 액션일 경우 
E11750실행 중 오류가 발생 되었을 경우 
E11751바코드 인식 결과 값이 유효하지 않은 경우 
E11799알 수 없는 오류가 발생 되었을 경우