Android Study

Android QR 코드 생성(kotlin)

85chong 2022. 8. 2. 14:26
728x90
반응형
SMALL

1. 새 프로젝트 생성

 

2. binding 추가

2-1.  app > build.gradle 에 추가

    ...
    buildTypes {
        debug {
			...
        }
        ...
    }
    ...
    buildFeatures{
        viewBinding = true
    }

 

3. build.gradle

3-1. app > build.gradle 에 추가

dependencies {
   ...
   implementation 'com.journeyapps:zxing-android-embedded:4.1.0'
   implementation 'com.google.zxing:core:3.4.1'
   ...
}

 

4. MainActivity  class 에 아래의 코드 작성

class MainActivity : AppCompatActivity() {

    private lateinit var binding:ActivityMainBinding
    val qa_contents = "https://www.naver.com"

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        createQRCode()
    }

    fun createQRCode(){
        val qrCode = QRCodeWriter()
        val bitMtx = qrCode.encode(
            qa_contents,
            BarcodeFormat.QR_CODE,
            350,
            350
        )
        val bitmap: Bitmap = Bitmap.createBitmap(bitMtx.width, bitMtx.height, Bitmap.Config.RGB_565)
        for(i in 0 .. bitMtx.width-1){
            for(j in 0 .. bitMtx.height-1){
                var color = 0
                if(bitMtx.get(i, j)){
                    color = Color.BLACK
                }else{
                    color = Color.WHITE
                }
                bitmap.setPixel(i, j, color)
            }
        }
        binding.qrImage.setImageBitmap(bitmap)
    }


}

!! bitmap은 메모리를 많이 소비하는 작업이라 resizing 해주는 것이 좋다. 그리고 보통 전역변수로 사용하면서 사용하지 않을때에는 recycle()호출하고, null 까지 해주는 것이 권고되는 방법이다. 

 

 

 

 

5. layout 생성

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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">

    <androidx.appcompat.widget.AppCompatImageView
        android:id="@+id/qrImage"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

 

해당 네이버로 되어있는 url 이 심어진 QR 코드 이미지가 생성된 결과를 확인 할 수 있음

 

- 끝 -