Android: El código QR generado que usa Zxing tiene márgenes (no es apropiado para el área)
Estoy usando en mi biblioteca de aplicaciones ZXing para generar código QR. Quiero generar código QR que se ajuste a la anchura de la pantalla (tal vez un poco de relleno).
Si fijo el ancho de la pantalla como tamaño de la anchura del código de QR consigo el código más pequeño de QR. Mira la captura de pantalla (es 320×240 resolución). Quiero que el código QR se ajuste al área negra. ¿Por qué el código QR en rojo es tan pequeño?
- Agregue el proyecto android de ZXing como biblioteca en android studio
- Zxing Android - ¿Cómo obtener escáner / cámara no en pantalla completa?
- ¿Cómo iniciar una actividad con un Intent y pasar una variable en la nueva actividad?
- Lanzamiento de un fragmento después de ZXing 2.0 QR-Code Scan
- Incorporación de ZXing en la aplicación de Android
¿Cómo lo estiro al área negra?
Mi código:
Display display = getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int width = size.x; Bitmap bm = encodeAsBitmap(mGeneratedURL, BarcodeFormat.QR_CODE, width, width); qrcodeImage.setImageBitmap(bm);
Generación de código QR:
private Bitmap encodeAsBitmap(String contents, BarcodeFormat format, int img_width, int img_height) throws WriterException { String contentsToEncode = contents; if (contentsToEncode == null) { return null; } Map<EncodeHintType, Object> hints = null; String encoding = guessAppropriateEncoding(contentsToEncode); if (encoding != null) { hints = new EnumMap<EncodeHintType, Object>(EncodeHintType.class); //hints.put(EncodeHintType.CHARACTER_SET, encoding); hints.put(EncodeHintType.MARGIN, 0); /* default = 4 */ } MultiFormatWriter writer = new MultiFormatWriter(); BitMatrix result; try { result = writer.encode(contentsToEncode, format, img_width, img_height, hints); } catch (IllegalArgumentException iae) { // Unsupported format return null; } int width = result.getWidth(); int height = result.getHeight(); int[] pixels = new int[width * height]; for (int y = 0; y < height; y++) { int offset = y * width; for (int x = 0; x < width; x++) { pixels[offset + x] = result.get(x, y) ? RED : Color.BLACK; } } Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); bitmap.setPixels(pixels, 0, width, 0, 0, width, height); return bitmap; }
- Crear / Generar código de barras usando Zxing en Android
- Cómo importar la biblioteca ZXING en la aplicación Android?
- Android + biblioteca de escaneo de códigos de barras ZXing - tamaño personalizado y orientación
- Cómo obtener un error de cámara en la aplicación de código de barras de Zxing
- Crear un código QR y mostrarlo en ImageView
- Cómo establecer el tamaño del mapa de bits en ZXing?
- PhoneGap BarcodeScanner - ClassNotFound
- Java.util.zip.ZipException: entrada duplicada
¡Encontré un problema!
Esta línea:
String encoding = guessAppropriateEncoding(contentsToEncode);
Devuelve null
Así que no se fija
EncodeHintType.MARGIN.
Quite la codificación y debería estar bien.
//if (encoding != null) { hints = new EnumMap<EncodeHintType, Object>(EncodeHintType.class); //hints.put(EncodeHintType.CHARACTER_SET, encoding); hints.put(EncodeHintType.MARGIN, 0); /* default = 4 */ //}
- ¿Qué debo elegir entre BroadcastReceiver y PhoneStateListener cuando necesito detectar un evento de llamada en android?
- ¿Cómo incluir dependencias en el proyecto de gradol de la biblioteca android?