2012-01-14 8 views

risposta

4

Consultare il codice sorgente zxing sotto android/. Nel pacchetto .encode vedrai un esempio di come esattamente codificare un codice QR in Android. Sì, non è possibile utilizzare e non è necessario utilizzare BufferedImage.

+0

Grazie ora ho codificato con successo il codice QR e l'ho inviato all'applicazione Android. Quindi lo ottiene come oggetto BitMap. Ora come lo decodifico? – user477519

+1

Bene si potrebbe guardare il pacchetto '.qrcode' per' Detector' e 'Decoder'. Ma se stai codificando informazioni solo per inviarlo a un'altra attività e decodificarlo ... perché non inviare semplicemente i dati originali? –

+0

@SeanOwen questo funziona per qualsiasi testo, ma se voglio codificare url allora potrei aver bisogno di usare lo stesso intent.putExtra (Intents.Encode.TYPE, Contents.Type.TEXT); perché non c'è il tipo per l'URL – Erum

0

Il modo più semplice è il google charts API. È una semplice API di riposo che ti darà un file png. Se non vuoi che la tua applicazione richieda internet hai più lavoro da fare, ma può essere fatto. com.google.zxing.qrcode.encoder sono le classi che genereranno un QR per te. Non ho mai capito esattamente come usarli, ma penso che ritorni una matrice che rappresenta il QR, dovresti capire come disegnarlo su una tela o qualcosa del genere.

+0

Grazie Tim. Ma non voglio che la mia applicazione richieda l'accesso a Internet. Quindi potresti suggerirmi qualche utile URL? – user477519

8

ho trovato questo per essere un utile http://codeisland.org/2013/generating-qr-codes-with-zxing/

Utilizzando la risorsa di cui sopra, ho creato un metodo di utilità come segue:

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 creerà bitmap della stringa utente fornita e/g (123 + ghnn-ggg) – Erum

+0

Ciao Erum, sì l'ho usato nella mia applicazione. Dovrebbe funzionare. –

Problemi correlati