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 */ //} 
  • Zxing usando diseño personalizado
  • Incorporar la biblioteca Zxing sin utilizar la aplicación Scanner de códigos de barras
  • Integre ZXing en Android Studio
  • ZXing doble imagen / superposición después de escanear
  • Problema en la generación de eventos de calendario utilizando zxing
  • Cómo leer varios códigos qr de una imagen usando la biblioteca zxing
  • Agregar menú a ZXings barcodescanner, y apretar la vista de superficie
  • Escaneo de códigos de barras / código de barras de ZXing QR
  • Lectura de códigos de barras Delphi xe7, evento después de la intención que no desencadena
  • Recursos para Android de Xamarin NotFoundException ZXingNetMobile
  • Actualizar sdk tiene NoClassDefFoundError para zxing
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.