안녕하세요 지난글에 이어 스캐닝중인 카메라에 글씨나 이미지를 넣어보겠습니다!
xml파일은 필요없고
java 페이지만 생성하면 됩니다.
지난글에서는 빈 액티비티를 생성하여 자동으로 AndroidMenifest.xml 파일에 추가되었지만
자바 파일만 생성하면 AndroidMenifest.xml 파일에 추가해야겠죠?
<activity android:name=".클래스이름"/>
한줄 추가하시면 됩니다!
전 CaptureForm.java로 생성했습니다.
CaptureForm.java를 구현하기전에 ScanQR.java 클래스에 코드한줄 추가하겠습니다.
IntentIntegrator 객체 생성 뒤,
qrScan.initiateScan(); 전에
qrScan.setCaptureActivity(CaptureForm.class);
이것한줄 생성하시면 되겠습니다. 생성한 자바파일 이름을 넣어주시면 되겠네요.
(아래 전체코드중 20번줄입니다.)
qrScan.java 전체코드입니다.
package com.example.myqrcode;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toast;
import com.google.zxing.integration.android.IntentIntegrator;
import com.google.zxing.integration.android.IntentResult;
public class ScanQR extends AppCompatActivity {
private IntentIntegrator qrScan;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scan_qr);
qrScan = new IntentIntegrator(this);
qrScan.setCaptureActivity(CaptureForm.class);
qrScan.setOrientationLocked(false); // default가 세로모드인데 휴대폰 방향에 따라 가로, 세로로 자동 변경됩니다.
qrScan.setPrompt("Sample Text!");
qrScan.initiateScan();
}
@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();
// todo
} else {
Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show();
// todo
}
} else {
super.onActivityResult(requestCode, resultCode, data);
}
}
}
이후 CaptureForm.java에서 setContentView(R.id.~~~); 가 있다면 를 지워주시고
CaptureActivity를 상속받습니다.
이 클래스 역시 zxing에서 만든 클래스입니다.
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
를 오버라이드 해주시고!
원하는 레이아웃의 LayoutParams 객체를 생성해줍니다.
ex)
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
);
다음으론 원하는 View를 생성해서 addContentView를 해주면 됩니다.
여기서는 TextView와 ImageView 두가지를 해보겠습니다.
CaptureForm.java 예시입니다.
package com.example.myqrcode;
import android.graphics.Color;
import android.os.Bundle;
import android.view.Gravity;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.journeyapps.barcodescanner.CaptureActivity;
public class CaptureForm extends CaptureActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT
);
/* TextVeiw를 설정하고 마지막엔 this.addContentView ! */
TextView textView = new TextView(this);
textView.setLayoutParams(new LinearLayout.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT));
textView.setTextColor(Color.parseColor("#ABCDEF"));
textView.setText("바코드 / QR 코드 입력화면");
textView.setGravity(Gravity.CENTER_HORIZONTAL);
/* imagaeVeiw를 설정하고 마지막엔 this.addContentView ! */
ImageView imageView = new ImageView(this);
imageView.setLayoutParams(new LinearLayout.LayoutParams(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT));
imageView.setImageDrawable(getResources().getDrawable(R.drawable.sample));
/* this.addContentView ! */
this.addContentView(textView, params);
this.addContentView(imageView,params);
}
}
결과모습입니다.
"바코드/QR코드 입력화면" 이라는 문구와
카드문양의 벡터이미지까지 나왔네요 ^^
추가적으로 zxing을 사용하려면
상업적 이용은 가능하나
언급을 해줘야하고
help 단추에 뭐가 있어야한다나 ...
좀 복잡하더라구요 (영어를 잘 몰라서;;)
https://stackoverflow.com/questions/10293870/could-i-use-zxing-for-business-purpose
아래 내용도 봐주시고 상황에 맞게 써주시기 바랍니다 ^^
2019/04/24 - [프로그래밍/안드로이드] - 안드로이드 스튜디오 애뮬레이터 웹카메라 연동
'프로그래밍 > Android' 카테고리의 다른 글
안드로이드 스튜디오 애뮬레이터 웹카메라 연동 (0) | 2019.04.24 |
---|---|
안드로이드 스튜디오 QR코드 (스캔 세로모드) (0) | 2019.04.17 |
안드로이드 스튜디오 QR코드 (스캔) (5) | 2019.04.15 |
안드로이드 스튜디오 QR코드 (생성) (0) | 2019.04.15 |
댓글