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?

¿Cómo lo estiro al área negra?

Desde la aplicación

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; } 

¡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 */ //} 
  • Cámara Zxing en modo vertical en Android
  • Integre ZXing en Android Studio
  • Invertir imagen en Nexus 5x en modo vertical
  • Conflicto Android drawable de la identificación del recurso?
  • ZXing convertir mapa de bits a BinaryBitmap
  • Escanear códigos de barras múltiples con ZXing
  • ¿Cómo incluir la biblioteca Zxing en el proyecto android?
  • Introducción a ZXing en Android
  • Agregue el proyecto android de ZXing como biblioteca en android studio
  • Android Genera código QR y código de barras usando Zxing
  • ¿Cómo abrir la pantalla de escaneo "zxing Barcode" en una pequeña ventana?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.