Vuzix Blade로 개발 시도(QR 코드 읽기 편)

입문


처음 뵙겠습니다. Apv@apv23973입니다.처음으로 Qiita에 투고했습니다.
제가 안드로이드 개발을 많이 해봤어요.
이번에는 스마트 유리컵에 관심이 있어서 이 Vuzix Blade 개발에 도전하고 싶습니다.
일단 Smart Glass 하면 몇 년 전에 구글에서 발매한 Google Glass가 아닐까요?
비록 만인의 환영을 별로 받지 못했다고 느끼지만, 나는 요 몇 년 동안 상업용을 중심으로 번화하기 시작한 산업이라고 생각한다.
이런 상황에서 제가 매우 흥미를 느끼는 것은 Vuzix사가 내놓은 Vuzix Blade Smart Glass입니다.
나는 가능한 한 정보를 업데이트할 수 있기를 바란다.

Vuzix Blade 시작 방법


우선 VuzixBlade에 대한 참고 사항은
이것은drama@1901drama가 쓴 이 문장입니다.
그래서 제 기사는 이 시작 방식이 끝났다고 가정하고 썼습니다.
Vuzix Blade(AR 스마트 유리)의 시작 방법
Vuzix Blade(AR 스마트 유리)의 시작 방법 2

QR 코드 읽기 정보


제가 예전에 Eclipse를 개발했기 때문에 Android Stdio가 됐어요. 정말 이렇게 편해졌어요.
사회에서 QR코드의 읽기는 구글이 개발하고 공개한 것으로 유명하다. 다양한 1차원과 2차원 바코드를 생성/조작할 수 있는 소스 라이브러리인 Zxing이다.
그래서 이번에도 이 Zxing에 설치하겠습니다.

실시


1. Zxing 라이브러리 추가
build.gradle
dependencies {
    implementation 'com.vuzix:hud-actionmenu:1.1'
    implementation 'com.vuzix:hud-resources:1.1'
    implementation 'com.journeyapps:zxing-android-embedded:3.6.0@aar'
    implementation 'com.google.zxing:core:3.2.1'
}
이런 느낌이 들 거예요.
2. 카메라 부팅에 권한 추가
AndoridManifest.xml
<uses-permission android:name="android.permission.CAMERA" />
응용 프로그램 태그 밖으로 선언합니다.
3. 화면 만들기
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="@color/hud_transparent"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:gravity="bottom">

        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="読み取り開始"
            android:textColor="@color/hud_transparent"
            />

    </LinearLayout>
</LinearLayout>
이번에는 읽기 시작 단추를 간단하게 추가했을 뿐이다.
4. MainActivity 편집
MainActivity.xml
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // ボタン割り当て
        Button btn = findViewById(R.id.button);
        Listener listener = new Listener();
        btn.setOnClickListener(listener);
    }
onCreate는 버튼 탐지기만 간단하게 추가했습니다.
MainActivity.xml
    private class Listener implements View.OnClickListener {
        @Override
        public void onClick(View view) {
            // カメラ起動
            scanBarcode(view);
        }
    }

    public void scanBarcode(View view) {
        IntentIntegrator integrator = new IntentIntegrator(this);
        integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE);
        integrator.setPrompt("QRコードを読取って下さい。");
        integrator.setTimeout(10000);
        integrator.setCameraId(0); // Use a specific camera of the device
        integrator.initiateScan();
    }
읽기 시작 버튼을 누르면 카메라를 시작하여 읽기 시작합니다.
integrator.setTimeout(10000);
카메라 시간 초과를 지정합니다.
10000ms이기 때문에 10초 후에 자동으로 처리가 취소됩니다.
integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE);
에서 기술한 장면은 다음 절차를 이용하여 명세표를 작성하여 개념 디자인에서 체량의 둘레를 분석하도록 한다.
내용을 보면 1차원 코드/2차원 코드를 지정할 수 있다.
지정한 읽기가 더 좋다고 들었어요.
IntentIntegrator.java
    // Product Codes
    public static final String UPC_A = "UPC_A";
    public static final String UPC_E = "UPC_E";
    public static final String EAN_8 = "EAN_8";
    public static final String EAN_13 = "EAN_13";
    public static final String RSS_14 = "RSS_14";

    // Other 1D
    public static final String CODE_39 = "CODE_39";
    public static final String CODE_93 = "CODE_93";
    public static final String CODE_128 = "CODE_128";
    public static final String ITF = "ITF";

    public static final String RSS_EXPANDED = "RSS_EXPANDED";

    // 2D
    public static final String QR_CODE = "QR_CODE";
    public static final String DATA_MATRIX = "DATA_MATRIX";
    public static final String PDF_417 = "PDF_417";
읽기 후 처리
MainActivity.xml
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);

        if(result != null) {
            if(result.getContents() == null) {
                // 読取キャンセル
                Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
            } else {
                // 読取成功
                Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
            }
        } else {
            super.onActivityResult(requestCode, resultCode, data);
        }
    }

설치는 여기까지입니다.
5. 실행
화면의 증거를 붙였지만
배경색의 검은색은 모두 투명해진다.(컵을 끼고 있어서...)




6. 끝말
Vuzix Blade도 기본적으로 일반적인 Android와 같습니다.
다만, Button의 인상은 생각보다 조금 다를 수 있는데...
게재되지는 않았지만 두 개의 버튼을 설정할 때 정말 어느 것을 선택했는지 모르겠다.
공식 홈페이지에도 UI를 결정하는 것이 중요할 것 같다고 적혀 있다.
다음에 통신 관계에 끼어들어보도록 하겠습니다.
여기까지 읽어줘서 고마워요.

좋은 웹페이지 즐겨찾기