Barcode


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

Barcode 은 HSP 에서 확장 라이브러리로 제공하는 API 로 aar 라이브러리 파일과 build.gradle 파일을 수정하여 사용할 수 있다. 

라이브러리 추가 방법은 Android 개발 가이드의 내용을 참조하면 된다.

Barcode 은 1차원 또는 2차원 바코드 (QRCode) 를 읽어 값을 반환 하는 기능을 가지고 있으며 Optional 한 기능이므로 사용자가 별도로 개발하여 사용해도 무방하다. 


show

show 는 Barcode 리더기를 띄우는 메소드로 타깃 환경이 SDK 23 이상이면 Runtime Permission 다이얼로그가 먼저 나타나게 되고 이후 Barcode 리더기가 나타나게 되도록 구성되어 있다. Barcode 를 띄울때는 BarcodeOptions  를 통해 beep / vibrator / flash 등에 옵션을 조정할 수 있으며 기본 값은 false 이다. 

BarcodeOptions Class

public final class BarcodeOptions implements Serializable {
   public boolean beep;
   public boolean vibrator;
   public boolean flash;
}

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

Example

// 3.10.18 이상
DAPBarcode.show(activity, BarcodeOptions(), {
   // TODO
}) {
   // TODO
}

// 3.10.18 이하
DAPBarcode.show(activity, BarcodeOptions())
// 3.10.18 이상
DAPBarcode.show(activity, new BarcodeOptions(), result -> {
       // TODO
   }, e -> {
       // TODO
   });

// 3.10.18 이하
DAPBarcode.show(activity, new BarcodeOptions());

기본 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="wrap_content"
       android:layout_height="wrap_content"
       android:layout_marginLeft="@dimen/hone_viewfinder_button_padding"
       android:layout_marginTop="@dimen/hone_viewfinder_button_padding"
       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>