Zxing significa Zebra Crossing, es una de las API de código abierto más populares para integrar el procesamiento de códigos QR (respuesta rápida) .
Biblioteca
Código QR
Es una abreviatura de Código de respuesta rápida . Es una combinación de cuadrados blancos y negros y se puede leer fácilmente con un escáner QR . Generalmente utiliza cuatro modos de codificación.
- Numérico
- Alfanumérico
- Byte/Binario
- kanji
Se utiliza para la autenticación y los pagos en línea. qué
Implementación paso a paso
En este proyecto, estamos creando una aplicación básica de escáner QR que se utiliza para escanear un código QR y mostrar el resultado en la pantalla.
Paso 1: crear un nuevo proyecto
Para crear un nuevo proyecto en Android Studio, consulte Cómo crear/iniciar un nuevo proyecto en Android Studio . Tenga en cuenta que seleccione Java como lenguaje de programación.
Nota: Elija API 24 y posteriores como SDK mínimo .
Paso 2: Agregar dependencias
Para usar la biblioteca Zxing en nuestra aplicación, debemos agregar su dependencia en el archivo gradle de nuestra aplicación. Para agregar la dependencia, vaya a Gradle Scripts > build.gradle(Module: app) y agregue las siguientes dependencias. Después de agregar la dependencia, debe hacer clic en Sincronizar ahora.
dependencias {
implementación ‘com.journeyapps:zxing-android-embedded:4.1.0’
}
Antes de continuar, agreguemos algunos atributos de color para mejorar la barra de la aplicación. Vaya a aplicación > res > valores > colores.xml y agregue los siguientes atributos de color.
XML
<resources> <color name="colorPrimary">#0F9D58</color> <color name="colorPrimaryDark">#16E37F</color> <color name="colorAccent">#03DAC5</color> </resources>
Paso 3: Creación del archivo de diseño activity_main.xml
En este paso, crearemos el diseño de nuestra aplicación, que tiene un botón para escanear y dos TextView, uno es para el contenido del mensaje del código QR y el segundo es para el formato del mensaje escaneado. Vaya a aplicación > res > diseño > actividad_principal.xml y agregue el siguiente fragmento de código.
XML
<?xml version="1.0" encoding="utf-8"?> <LinearLayout 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" android:orientation="vertical" tools:context=".MainActivity"> <TextView android:id="@+id/textContent" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_margin="10dp" android:text="messageContent"/> <TextView android:id="@+id/textFormat" android:text="messageFormat" android:layout_width="wrap_content" android:layout_gravity="center" android:layout_margin="10dp" android:layout_height="wrap_content" /> <Button android:id="@+id/scanBtn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="10dp" android:backgroundTint="#0F9D58" android:layout_gravity="center" android:text="Scan"/> </LinearLayout>
Paso 4: trabajar con el archivo MainActivity.java
En este paso, trabajaremos con el archivo MainActivity.java donde primero inicializamos el botón y las dos TextViews . En el comportamiento onClick() del botón, creamos el objeto de la clase IntentIntegrator que se usa para llamar al método initialScan() para el proceso de escaneo. Después de eso, en el método onActivityResult() , verificaremos si el mensaje escaneado es nulo y luego brindaremos un mensaje como «Cancelado», de lo contrario, configuraremos el mensaje escaneado y su formato sobre TextViews.
Java
import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import com.google.zxing.integration.android.IntentIntegrator; import com.google.zxing.integration.android.IntentResult; // implements onClickListener for the onclick behaviour of button public class MainActivity extends AppCompatActivity implements View.OnClickListener { Button scanBtn; TextView messageText, messageFormat; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // referencing and initializing // the button and textviews scanBtn = findViewById(R.id.scanBtn); messageText = findViewById(R.id.textContent); messageFormat = findViewById(R.id.textFormat); // adding listener to the button scanBtn.setOnClickListener(this); } @Override public void onClick(View v) { // we need to create the object // of IntentIntegrator class // which is the class of QR library IntentIntegrator intentIntegrator = new IntentIntegrator(this); intentIntegrator.setPrompt("Scan a barcode or QR Code"); intentIntegrator.setOrientationLocked(true); intentIntegrator.initiateScan(); } @Override protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); IntentResult intentResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); // if the intentResult is null then // toast a message as "cancelled" if (intentResult != null) { if (intentResult.getContents() == null) { Toast.makeText(getBaseContext(), "Cancelled", Toast.LENGTH_SHORT).show(); } else { // if the intentResult is not null we'll set // the content and format of scan message messageText.setText(intentResult.getContents()); messageFormat.setText(intentResult.getFormatName()); } } else { super.onActivityResult(requestCode, resultCode, data); } } }