Genera código QR en Android usando Kotlin

Muchas aplicaciones hoy en día usan códigos QR dentro de su aplicación para ocultar alguna información. Los códigos QR se ven en muchas aplicaciones de pago que los usuarios utilizan para escanear y realizar pagos. Los códigos QR que se ven dentro de estas aplicaciones se generan dentro de la propia aplicación. En este artículo, veremos cómo generar un código QR en Android usando Kotlin.

Nota : si está buscando generar un código QR en Android usando Java. Cómo generar código QR en Android usando Java

Implementación paso a paso

Paso 1: crea un nuevo proyecto en Android Studio

Cómo crear/iniciar un nuevo proyecto en Android Studio

Paso 2: Agregar dependencia a build.gradle (Módulo: aplicación)

Navegue a Gradle Scripts > build.gradle(Module:app) y agregue la siguiente dependencia en la sección de dependencias.

implementation 'androidmads.library.qrgenearator:QRGenearator:1.0.3'

Después de agregar esta dependencia, simplemente sincronice este proyecto para instalarlo. 

Paso 3: trabajar con el archivo activity_main.xml

Vaya a la aplicación > res > diseño > actividad_principal.xml y agregue el siguiente código a ese archivo. A continuación se muestra el código para el archivo activity_main.xml .

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">
  
    <!--on below line we are creating 
        a text for heading of our app-->
    <TextView
        android:id="@+id/idTVHeading"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:gravity="center"
        android:padding="4dp"
        android:text="QR Code Generator"
        android:textAlignment="center"
        android:textColor="@color/purple_200"
        android:textSize="18sp"
        android:textStyle="bold" />
  
    <!--We are using this image
        view to display our QR code-->
    <ImageView
        android:id="@+id/idIVQrcode"
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="50dp"
        android:contentDescription="QR Code" />
  
    <!--Edit text to enter text
        for creating a QR code-->
    <EditText
        android:id="@+id/idEdt"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/idIVQrcode"
        android:layout_marginStart="20dp"
        android:layout_marginTop="30dp"
        android:layout_marginEnd="20dp"
        android:autofillHints=""
        android:hint="Enter your message"
        android:inputType="text" />
  
    <!--Button for creating a QR code-->
    <Button
        android:id="@+id/idBtnGenerateQR"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/idEdt"
        android:layout_marginStart="20dp"
        android:layout_marginTop="30dp"
        android:layout_marginEnd="20dp"
        android:text="Generate QR Code"
        android:textAllCaps="false" />
  
</RelativeLayout>

Paso 4: trabajar con el archivo MainActivity.kt

Vaya al archivo MainActivity.kt y consulte el siguiente código. A continuación se muestra el código del archivo MainActivity.kt . Se agregan comentarios dentro del código para comprender el código con más detalle.

Kotlin

package com.gtappdevelopers.kotlingfgproject
  
import android.graphics.Bitmap
import android.graphics.Point
import android.os.Bundle
import android.text.TextUtils
import android.view.Display
import android.view.WindowManager
import android.widget.Button
import android.widget.EditText
import android.widget.ImageView
import android.widget.Toast
import androidmads.library.qrgenearator.QRGContents
import androidmads.library.qrgenearator.QRGEncoder
import androidx.appcompat.app.AppCompatActivity
  
class MainActivity : AppCompatActivity() {
  
    // on below line we are creating a variable 
    // for our image view, edit text and a button.
    lateinit var qrIV: ImageView
    lateinit var msgEdt: EditText
    lateinit var generateQRBtn: Button
  
    // on below line we are creating
    // a variable for bitmap
    lateinit var bitmap: Bitmap
  
    // on below line we are creating 
    // a variable for qr encoder.
    lateinit var qrEncoder: QRGEncoder
  
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // on below line we are 
        // initializing our all variables.
        qrIV = findViewById(R.id.idIVQrcode)
        msgEdt = findViewById(R.id.idEdt)
        generateQRBtn = findViewById(R.id.idBtnGenerateQR)
  
        // on below line we are adding on click
        // listener for our generate QR button.
        generateQRBtn.setOnClickListener {
            // on below line we are checking if msg edit text is empty or not.
            if (TextUtils.isEmpty(msgEdt.text.toString())) {
  
                // on below line we are displaying toast message to display enter some text
                Toast.makeText(applicationContext, "Enter your message", Toast.LENGTH_SHORT).show()
            } else {
                // on below line we are getting service for window manager
                val windowManager: WindowManager = getSystemService(WINDOW_SERVICE) as WindowManager
  
                // on below line we are initializing a 
                // variable for our default display
                val display: Display = windowManager.defaultDisplay
  
                // on below line we are creating a variable
                // for point which is use to display in qr code
                val point: Point = Point()
                display.getSize(point)
  
                // on below line we are getting 
                // height and width of our point
                val width = point.x
                val height = point.y
  
                // on below line we are generating 
                // dimensions for width and height
                var dimen = if (width < height) width else height
                dimen = dimen * 3 / 4
  
                // on below line we are initializing our qr encoder
                qrEncoder = QRGEncoder(msgEdt.text.toString(), null, QRGContents.Type.TEXT, dimen)
  
                // on below line we are running a try 
                // and catch block for initialing our bitmap
                try {
                    // on below line we are 
                    // initializing our bitmap
                    bitmap = qrEncoder.encodeAsBitmap()
  
                    // on below line we are setting 
                    // this bitmap to our image view
                    qrIV.setImageBitmap(bitmap)
                } catch (e: Exception) {
                    // on below line we 
                    // are handling exeption
                    e.printStackTrace()
                }
            }
        }
    }
}

Ahora ejecute su aplicación para ver el resultado. 

Producción: 

Publicación traducida automáticamente

Artículo escrito por chaitanyamunje y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *