2012-01-14 19 views

Respuesta

4

Mire el código fuente de zxing en android/. En el paquete .encode, verá un ejemplo de cómo codificar exactamente un código QR en Android. Sí, no puede usar, y no necesita usar BufferedImage.

+0

Gracias, he codificado con éxito el código QR y lo he enviado a la aplicación de Android. Luego lo obtiene como un objeto BitMap. ¿Ahora cómo lo decodifico? – user477519

+1

Bueno, podrías mirar el paquete '.qrcode' para' Detector' y 'Decoder'. Pero si está codificando información solo para enviarla a otra actividad y decodificarla ... ¿por qué no simplemente enviar los datos originales? –

+0

@SeanOwen esto funciona para cualquier texto, pero si quiero codificar url, entonces puede que necesite usar el mismo intent.putExtra (Intents.Encode.TYPE, Contents.Type.TEXT); porque no hay Tipo para URL – Erum

0

La manera más fácil es google charts API. Es una API de descanso simple que le dará un archivo png. Si no quiere que su aplicación requiera internet, tiene más trabajo en sus manos, pero se puede hacer. com.google.zxing.qrcode.encoder son las clases que generarán un QR para usted. Nunca imaginé exactamente cómo usarlos, pero creo que devuelve una matriz que representa el QR, tendrías que encontrar la forma de dibujarlo en un lienzo o algo así.

+0

Gracias Tim. Pero no quiero que mi aplicación requiera acceso a internet. Entonces, ¿podrías sugerirme alguna URL útil? – user477519

8

He encontrado que esto sea un útil http://codeisland.org/2013/generating-qr-codes-with-zxing/

utilizando el recurso anteriormente, he creado un método de utilidad como sigue:

public static Bitmap encodeToQrCode(String text, int width, int height){ 
    QRCodeWriter writer = new QRCodeWriter(); 
    BitMatrix matrix = null; 
    try { 
     matrix = writer.encode(text, BarcodeFormat.QR_CODE, 100, 100); 
    } catch (WriterException ex) { 
     ex.printStackTrace(); 
    } 
    Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565); 
    for (int x = 0; x < width; x++){ 
     for (int y = 0; y < height; y++){ 
      bmp.setPixel(x, y, matrix.get(x,y) ? Color.BLACK : Color.WHITE); 
     } 
    } 
    return bmp; 
} 
+0

@Steve Paul creará mapa de bits de la cadena de usuario proporcionada e/g (123 + ghnn-ggg) – Erum

+0

Hola Erum, sí, lo he usado en mi aplicación. Deberia de funcionar. –

Cuestiones relacionadas