[앱 개발] 안드로이드 바코드 생성하기

이경민·2022년 7월 12일
0

안드로이드 📱

목록 보기
1/2

앱에서 바코드 생성하기

안드로이드 스튜디오 (언어: 자바)를 사용하여 바코드를 생성하는 방법

설명

구글 로그인한 사용자의 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'

Fragment 코드

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;
        }
}


layout 코드

<?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>


완료된 화면

0개의 댓글