En este blog discutiremos cómo escanear Código QR utilizando ZXing biblioteca en Android. Antes de implementar el código real, entendamos qué es la biblioteca ZXing.
ZXing («paso de peatones») es una biblioteca de códigos de barras 1D / 2D multiformato de código abierto para el procesamiento de imágenes implementada en Java con puertos a otros lenguajes. ZXing también está alojado en el proyecto de código abierto de Google.
La última versión hasta la fecha es 3.3.3.
Dependencia
adiccion {
implementación ‘com.google.zxing: core: ‘
implementación (‘com.journeyapps: zxing-android-embedded: 3.6.0’) { transitivo = Falso}
}
Código
activity_main.xml
<?xml versión = «1.0» codificación = «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»
herramientas: contexto = ”. Actividad principal «
android: orientación = «vertical»
android: layout_gravity = «centro»
android: background = ”# fff”><Disposición lineal
android: orientación = «vertical»
android: layout_width = «match_parent»
android: layout_height = «250 ppp»
android: background = «@ drawable / geadient_background»><Vista de texto
android: layout_width = «match_parent»
android: layout_height = «wrap_content»
android: fontFamily = ”@ font / asap_bold”
Android: text = ”@ string / qr_code”
android: textColor = ”# ffffff”
android: textSize = «32sp»
android: layout_marginTop = «80dp»
android: layout_marginStart = ”16dp”
android: textStyle = «negrita»/><Vista de texto
android: layout_width = «match_parent»
android: layout_height = «wrap_content»
android: layout_marginStart = ”16dp”
android: fontFamily = ”@ font / lo antes posible”
android: text = ”@ string / scanner”
android: textColor = ”# FFFFFF”
android: textSize = «24sp» /></Disposición lineal>
<Mando
android: layout_width = «250dp»
android: layout_height = «wrap_content»
android: id = ”@ + id / scan”
android: padding = «4dp»
android: layout_marginTop = «20sp»
android: layout_gravity = «centro»
android: text = «Escanear»
android: fontFamily = ”@ font / asap_bold”
android: textSize = «19sp»
android: textStyle = «negrita»
android: textColor = ”# ffffff”
android: background = «@ drawable / button_background»/></Disposición lineal>
MainActivity.java
clase pública Actividad principal se expande AppCompatActivity {
privado Mando escanear;escanear.setOnClickListener (Nuevo View.OnClickListener () {@Override vacío público onClick (Ver en) {IntentIntegrator intentIntegrator = Nuevo IntentIntegrator (MainActivity.esta); intentIntegrator.setDesiredBarcodeFormats (IntentIntegrator.CÓDIGO QR); intentIntegrator.setCameraId (0); intentIntegrator.setOrientationLocked (Falso); intentIntegrator.setPrompt («exploración»); intentIntegrator.setBeepEnabled (real); intentIntegrator.setBarcodeImageEnabled (real); intentIntegrator.initiateScan ();
}
});
}
@Transcripción vacío protegido onActivityResult (En t solicitar un código En t resultCode, @Nullable Intent data) {IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, datos); Si (resultado! = cero && result.getContents ()! = cero) {
Nuevo AlertDialog.Builder (MainActivity.esta) .setTitle («Resultado de la exploracion») .setMessage (result.getContents ()) .setPositiveButton («Copiar», Nuevo DialogInterface.OnClickListener () {
@Transcripción vacío público onClick (diálogo DialogInterface, En t que) {ClipboardManager manager = (ClipboardManager) getSystemService (CLIPBOARD_SERVICE); Datos de ClipData = ClipData.newPlainText(«resultado», result.getContents ()); manager.setPrimaryClip (datos); }
}). setNegativeButton («Anulación», Nuevo DialogInterface.OnClickListener () {
@Transcripción vacío público onClick (diálogo DialogInterface, En t cuál) {dialog.dismiss (); }}). crear (). espectáculo ();
}
súper.onActivityResult (requestCode, resultCode, datos);
}
}