안드로이드 스튜디오 (언어: 자바)를 사용하여 바코드를 생성하는 방법
구글 로그인한 사용자의 id 정보를 바코드로 생성하였습니다.
아래 코드에서 text 부분이 바코드의 내용이고, (800, 800) 부분은 바코드의 크기를 설정한 부분입니다.
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
try{
// 바코드의 내용: text
// 바코드의 크기: 800, 800
BitMatrix bitMatrix = multiFormatWriter.encode(text, BarcodeFormat.QR_CODE,800,800);
BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);
iv.setImageBitmap(bitmap);
}catch (Exception e){}
build.gradle의 Module의 dependencies에 아래 내용 추가
// Zxing바코드 라이브러리
implementation 'com.journeyapps:zxing-android-embedded:3.5.0'
public class FragmentMypage extends Fragment {
private FirebaseAuth mAuth;
private ImageView iv;
private String text;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
ViewGroup rootView = (ViewGroup)inflater.inflate(R.layout.fragment_mypage, container, false);
// 구글 로그인 로그아웃 버튼 기능
Button logoutBtn=(Button)rootView.findViewById(R.id.mypage_logout_btn);
logoutBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FirebaseAuth.getInstance().signOut();
Toast.makeText(getContext(), "sign out", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(getActivity(), LoginActivity.class);
startActivity(intent);
}
});
// 구글 로그인의 사용자 정보 불러오기
mAuth=FirebaseAuth.getInstance();
final FirebaseUser user=mAuth.getCurrentUser();
// 사용자 계정 이름으로 setText
TextView nickname=(TextView)rootView.findViewById(R.id.loginNickname);
nickname.setText(user.getDisplayName());
// 사용자의 이메일로 setText
TextView useremail=(TextView)rootView.findViewById(R.id.loginEmail);
useremail.setText(user.getEmail());
iv = (ImageView) rootView.findViewById(R.id.qrcode);
// 로그인이 되어있을 경우 text를 사용자 id로 지정
if (user != null) {
text =user.getUid();
} else {
text ="no user";
}
// QR 코드를 ImageView 생성하는 코드
MultiFormatWriter multiFormatWriter = new MultiFormatWriter();
try{
// 바코드의 내용: text
// 바코드의 크기: 800, 800
BitMatrix bitMatrix = multiFormatWriter.encode(text, BarcodeFormat.QR_CODE,800,800);
BarcodeEncoder barcodeEncoder = new BarcodeEncoder();
Bitmap bitmap = barcodeEncoder.createBitmap(bitMatrix);
iv.setImageBitmap(bitmap);
}catch (Exception e){}
return rootView;
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".FragmentMypage">
<ImageView
android:id="@+id/imageView3"
android:layout_width="match_parent"
android:layout_height="109dp"
android:src="@drawable/userpage" />
<TextView
android:id="@+id/loginNickname"
android:gravity="center"
android:text="닉네임"
android:textColor="#2196f3"
android:layout_gravity="center"
android:textSize="20sp"
android:layout_marginTop="10dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/loginEmail"
android:gravity="center"
android:text="이메일"
android:textColor="#2196f3"
android:layout_gravity="center"
android:textSize="20sp"
android:layout_marginTop="5dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<!-- 로그아웃 버튼 -->
<androidx.appcompat.widget.AppCompatButton
android:gravity="center"
android:id="@+id/mypage_logout_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="30dp"
android:textColor="#2196f3"
android:background="#D6D7D7"
android:textStyle="bold"
android:textSize="15dp"
android:text="로그아웃"/>
<!-- 바코드 이미지 -->
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/qrcode"
android:layout_marginTop="30dp"
android:layout_gravity="center"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"/>
</LinearLayout>