728x90
안녕하세요. 오늘은 안드로이드로 QR코드 스캐너를 만들어 보겠습니다.
먼저 build.gradle(:app)파일에 있는 dependencies에 아래를 추가합니다.
implementation 'com.journeyapps:zxing-android-embedded:4.3.0'
그리고 메인액티비티 말고 새로운 빈 액티비티를 만들어주세요.
저는 ScanActivity의 이름으로 만들겠습니다. 그리고 나서 아래 코드를 입력합니다.
public class ScanActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scan);
IntentIntegrator integrator = new IntentIntegrator(this);
integrator.setDesiredBarcodeFormats(IntentIntegrator.QR_CODE); // 바코드 형식 설정
integrator.setPrompt("Scan a barcode or QR code"); // 스캔 화면에 표시되는 메시지 설정
integrator.setCameraId(0); // 후면 카메라 사용
integrator.setBeepEnabled(false); // 스캔 소리 사용 여부
integrator.setOrientationLocked(false);
integrator.initiateScan(); // 스캔 시작
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if (result != null) {
if (result.getContents() == null) {
setResult(Activity.RESULT_CANCELED);
} else {
// 스캔된 코드를 처리합니다.
String scannedCode = result.getContents();
Intent intent = new Intent();
intent.putExtra("scannedCode", scannedCode);
setResult(Activity.RESULT_OK, intent);
}
finish();
}
}
}
그리고 메인액티비티 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"
tools:context=".MainActivity"
android:orientation="vertical"
android:gravity="center">
<Button
android:layout_width="200dp"
android:layout_height="40dp"
android:text="qr인식"
android:id="@+id/scan_qr_btn"/>
</LinearLayout>
그리고 자바 파일입니다.
public class MainActivity extends AppCompatActivity {
Button scan_qr_btn;
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
scan_qr_btn = findViewById(R.id.scan_qr_btn);
context = this;
scan_qr_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, ScanActivity.class);
startActivityForResult(intent, 0);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0) {
if (resultCode == Activity.RESULT_OK) {
String scannedCode = data.getStringExtra("scannedCode");
Toast.makeText(context,scannedCode,Toast.LENGTH_SHORT).show();
} else if (resultCode == Activity.RESULT_CANCELED) {
Toast.makeText(this,"스캔을 취소하였습니다.",Toast.LENGTH_SHORT).show();
}
}
}
}
이렇게 하면 Toast메시지로 스캔한 정보를 띄워줄겁니다.
'안드로이드 자바' 카테고리의 다른 글
[JAVA][Android] SQLite & Dao 사용하기 (2) | 2023.12.06 |
---|---|
[JAVA][Android] 지문인식 기능 만들기 (0) | 2023.11.30 |
[Android][Java] 네이버지도 API 반경표현 (0) | 2023.11.15 |
[JAVA][Android] 리사이클러뷰 드래그엔 드롭 위치 수정 (0) | 2023.11.06 |
[JAVA][Android] BadgeDrawable을 활용하여 바텀 네비게이션 바에 뱃지 구현(수정본) (0) | 2023.10.22 |