Notice
Recent Posts
Recent Comments
Link
투케이2K
140. (AndroidStudio/android/java) zxing 라이브러리 사용해 QR 코드 스캔 실시 본문
/* =========================== */
[ 개발 환경 설정 ]
개발 툴 : AndroidStudio
개발 언어 : java
/* =========================== */
/* =========================== */
[소스 코드]
[gradle 설정 코드]
[build.gradle(Project) 파일]
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath "com.android.tools.build:gradle:4.0.0"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
// ==== [QR 사용 위함] ====
maven { url "https://jitpack.io" }
// ==== [스캔 사용 위함] ====
mavenCentral()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
[build.gradle(Module:app) 파일]
implementation 'com.github.kenglxn.QRGen:android:2.6.0'
implementation 'com.journeyapps:zxing-android-embedded:3.5.0'
implementation "com.google.zxing:core:3.3.0"
[JAVA : QR 스캔 코드]
//TODO [QR 스캔 데이터 확인]
barcodeScannerView.decodeContinuous(new BarcodeCallback() {
@Override
public void barcodeResult(BarcodeResult result) {
try {
String result_data = "";
if(captureFlag == false){ //TODO [최초 1번 스캔된 경우]
result_data = String.valueOf(result.toString());
byte result_byte [];
//TODO Arrays.toString 형식 바이트 문자열 [104,101,108,108,111]
if(result_data.contains("[") && result_data.contains("]")
&& result_data.contains(",")){ //TODO [바이트 값 형식 문자열인 경우 > 한글로 출력]
result_byte = getByteArray(result_data);
result_data = new String(result_byte, "utf-8");
}
Log.d("---","---");
Log.w("//===========//","================================================");
Log.d("","\n"+"[A_QR_Normal_Scan > QR 스캔 정보 확인 실시]");
Log.d("","\n"+"[결과 : "+String.valueOf(result_data)+"]");
Log.w("//===========//","================================================");
Log.d("---","---");
//TODO [팝업창 호출 실시]
String alertTittle = "[QR 스캔 정보 확인]";
String alertMessage = "[정보]"+"\n"+"\n"+String.valueOf(result_data);
String buttonYes = "다시 스캔";
String buttonNo = "종료";
new AlertDialog.Builder(A_QR_Scan.this)
.setTitle(alertTittle)
.setMessage(alertMessage)
.setCancelable(false)
.setPositiveButton(buttonYes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//TODO Auto-generated method stub
//TODO [다시 스캔을 하기 위해 플래그값 변경]
captureFlag = false;
}
})
.setNegativeButton(buttonNo, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
try {
//TODO [액티비티 종료 실시]
finish();
overridePendingTransition(0,0);
}
catch (Exception e){
e.printStackTrace();
}
}
})
.show();
//TODO [플래그 값을 변경 실시 : 중복 스캔 방지]
captureFlag = true;
}
}
catch (Exception e){
e.printStackTrace();
}
}
@Override
public void possibleResultPoints(List<ResultPoint> resultPoints) {
}
});
[XML : activity_a_qr_scan.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:orientation="vertical"
android:focusable="true"
android:focusableInTouchMode="true"
android:id="@+id/parent">
<!-- 카메라 영역 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:layout_gravity="center"
android:background="#000000"
android:layout_marginTop="0dp"
android:layout_marginLeft="0dp"
android:layout_marginRight="0dp"
android:layout_marginBottom="0dp">
<com.journeyapps.barcodescanner.DecoratedBarcodeView
android:id="@+id/barcodeScannerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:visibility="visible" />
</LinearLayout>
</LinearLayout>
/* =========================== */
/* =========================== */
[결과 출력]
/* =========================== */
/* =========================== */
[파일 첨부 : 전체 소스코드]
/* =========================== */
반응형
'Android' 카테고리의 다른 글
Comments