2012-01-14 11 views

Odpowiedz

4

Proszę spojrzeć na kod źródłowy ZXing pod android/. W pakiecie .encode zobaczysz przykład, jak kodować kod QR w systemie Android. Tak, nie możesz używać i nie musisz używać BufferedImage.

+0

Dzięki temu pomyślnie zakodowałem kod QR i wysłałem go do aplikacji na Androida. Następnie pobiera go jako obiekt BitMap. Jak mogę to zdekodować? – user477519

+1

Cóż, możesz przyjrzeć się pakietowi '.qrcode' dla' Detektora 'i' Dekodera'. Ale jeśli kodujesz informacje tylko po to, aby wysłać je do innej aktywności i odkodować ... dlaczego nie wystarczy wysłać oryginalne dane? –

+0

@SeanOwen to działa dla dowolnego tekstu, ale jeśli chcę kodować url, to może potrzebuję użyć tego samego intent.putExtra (Intents.Encode.TYPE, Contents.Type.TEXT); ponieważ nie ma typu dla adresu URL – Erum

0

Najłatwiej jest google charts API. Jest to prosty interfejs API odpoczynku, który da ci plik png. Jeśli nie chcesz, aby Twoja aplikacja wymagała dostępu do Internetu, masz więcej pracy na swoich rękach, ale możesz to zrobić. com.google.zxing.qrcode.encoder to klasy, które wygenerują QR dla ciebie. Nigdy nie wymyśliłem dokładnie, jak z nich korzystać, ale myślę, że zwraca matrycę, która reprezentuje QR, trzeba by opracować, jak narysować go na płótnie lub coś.

+0

Thanks Tim. Ale nie chcę, aby moja aplikacja wymagała dostępu do Internetu. Czy mógłbyś podać mi jakieś użyteczne adresy URL? – user477519

8

Znalazłem to być pomocne http://codeisland.org/2013/generating-qr-codes-with-zxing/

Stosując powyższą zasobu, stworzyłem metodę użytkową następująco:

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 utworzy mapę bitową dostarczonego łańcucha użytkownika e/g (123 + ghnn-ggg) – Erum

+0

Cześć Erum, tak, użyłem go w mojej aplikacji. Powinno działać. –

Powiązane problemy