Vuzix Blade로 개발 시도(QR 코드 읽기 편)
17641 단어 AndroidVuzixBladeSmartGlassiOSAR
입문
처음 뵙겠습니다. 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.gradledependencies {
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를 결정하는 것이 중요할 것 같다고 적혀 있다.
다음에 통신 관계에 끼어들어보도록 하겠습니다.
여기까지 읽어줘서 고마워요.
Reference
이 문제에 관하여(Vuzix Blade로 개발 시도(QR 코드 읽기 편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/apv23973/items/281d3f695ed695de3c54
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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'
}
<uses-permission android:name="android.permission.CAMERA" />
<?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>
@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);
}
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();
}
// 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";
@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);
}
}
Reference
이 문제에 관하여(Vuzix Blade로 개발 시도(QR 코드 읽기 편)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/apv23973/items/281d3f695ed695de3c54텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)