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 코드 이미지가 생성된 결과를 확인 할 수 있음
- 끝 -
'Android Study' 카테고리의 다른 글
Kakao Map Native API 연동시 안되는 케이스 중 2가지 경험 공유 (0) | 2023.01.18 |
---|---|
Android Bluetooth Receiver (0) | 2022.11.01 |
ViewPager Scroll Anim 제거(kotlin) (0) | 2022.08.02 |
현재 메소드 이름 가져오기(커스텀 주석) (0) | 2022.07.06 |
AndroidStudio 다중 모듈 코드 볼때 팁! (0) | 2022.06.17 |