Android एप्लिकेशन के लिए QR कोड कैसे जनरेट करें? [बन्द है]


92

मुझे अपने एंड्रॉइड एप्लिकेशन में एक qrcode बनाने की आवश्यकता है, और मुझे एक लाइब्रेरी या स्रोत कोड की आवश्यकता है जो मुझे एंड्रॉइड ऐप में एक क्यूआर कोड बनाने की अनुमति देता है।

मुझे जो पुस्तकालय चाहिए वह है:

  1. वाटरमार्क नहीं छोड़ें ( onbarcodeपुस्तकालय की तरह )
  2. qrcode बनाने के लिए वेब सेवा API का उपयोग न करें (जैसे Google की लाइब्रेरी ज़ॉक्सिंग)
  3. जरूरत नहीं 3 पार्टी installers (जैसे QR Droid)

मैंने पहले ही iPhone (ऑब्जेक्टिव-सी) के लिए इस तरह का कोड बनाया था, लेकिन मुझे एंड्रॉइड के लिए एक त्वरित समाधान की आवश्यकता है जब तक कि मेरे पास खुद का क्यूआर कोड जनरेटर बनाने का समय नहीं है। यह मेरी पहली Android परियोजना है इसलिए किसी भी मदद की सराहना की जाएगी।


आप इसके खुले स्रोत का उपयोग कर सकते हैं
नंदेश

2
zxing एक वेब एपीआई नहीं है, वास्तव में, नीचे देखें
सीन ओवेन

1
यहाँ QR बिटमैप बनाने के लिए मेरा सरल परीक्षण ऐप देखें: stackoverflow.com/a/30529519/165071
अलेक्जेंडर फार्बर

जवाबों:


68

क्या आपने ZXING में देखा है ? मैं बारकोड बनाने के लिए इसका सफलतापूर्वक उपयोग कर रहा हूं। आप बिटकॉइन एप्लिकेशन src में एक पूर्ण कार्य उदाहरण देख सकते हैं

// this is a small sample use of the QRCodeEncoder class from zxing
try {
    // generate a 150x150 QR code
    Bitmap bm = encodeAsBitmap(barcode_content, BarcodeFormat.QR_CODE, 150, 150);

    if(bm != null) {
        image_view.setImageBitmap(bm);
    }
} catch (WriterException e) { //eek }

मैंने अपने एंड्रॉइड 2.2 डिवाइसेस, एप्लीकेशन फोर्स क्लोज्ड, कुछ भी गलत होने पर बिटकॉइन ओपन सोर्स को जीथब और ट्राउट से फोर्क किया है?
रॉय ली

क्षमा करें, मैंने एक वर्ष से अधिक समय तक उस ऐप को नहीं देखा है। जैसा कि शॉन द्वारा नीचे उल्लेख किया गया है, ज़ोक्सिंग एनकोडर के लिए स्रोत यहाँ देखें: code.google.com/p/zxing/source/browse/trunk#trunk/core/src/com/…
Rob

@ क्या यह उपयोगकर्ता परिभाषित संख्या का क्यूआर कोड उत्पन्न करेगा? केवल संख्या या संख्या लैपबेट्स के साथ
इरुम

@ यह आपके द्वारा प्रदान किए जाने वाले किसी भी सबसे अल्फा न्यूमेरिक स्ट्रिंग्स के लिए एक बारकोड बनाएगा
रोब

इसका उपयोग करें: कार्यान्वयन 'meinos7.barcodescanner: zxing: 1.9.13'
एम। उस्मान खान

97

zax के साथ यह QR बनाने के लिए मेरा कोड है

 QRCodeWriter writer = new QRCodeWriter();
    try {
        BitMatrix bitMatrix = writer.encode(content, BarcodeFormat.QR_CODE, 512, 512);
        int width = bitMatrix.getWidth();
        int height = bitMatrix.getHeight();
        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, bitMatrix.get(x, y) ? Color.BLACK : Color.WHITE);
            }
        }
        ((ImageView) findViewById(R.id.img_result_qr)).setImageBitmap(bmp);

    } catch (WriterException e) {
        e.printStackTrace();
    }

मेरे लिए काम किया। आसान जोड़ने पर।
Roon13

धन्यवाद। मेरे लिए काम।
रोशन शान

@Stefano क्या यह n नहीं उत्पन्न कर सकता है। यूनिक क्यूआर कोड की?
आशीष तिवारी

एक आकर्षण g88 की तरह काम किया !! +1 क्या कोई विकल्प है जिसमें मैं इसमें कुछ लोगो जोड़ सकता हूँ?
अमित

1
मेमोरी लीक से बचने के लिए, उस बिटमैप मेमोरी को प्रबंधित करना न भूलें जो इसके द्वारा बनाई जा रही है Bitmap.createBitmap
20

43

हो सकता है कि यह पुराना विषय हो, लेकिन मैंने पाया कि यह पुस्तकालय बहुत उपयोगी और उपयोग में आसान है

QRGen

Android में इसका उपयोग करने के लिए उदाहरण

 Bitmap myBitmap = QRCode.from("www.example.org").bitmap();
ImageView myImage = (ImageView) findViewById(R.id.imageView);
myImage.setImageBitmap(myBitmap);

2
यह आसान और कारगर उपाय है!
ज़ोहैब अली

5
.bitmap () नहीं मिला है
Marcel Adel

आपको एंड्रॉइड निर्भरता का उपयोग करना चाहिए: implementation 'com.github.kenglxn.QRGen:android:[version]' और QRCode वर्ग को इस तरह से आयात करना चाहिए :import net.glxn.qrgen.android.QRCode
aro

2
हल करने में विफल: com.github.kenglxn.QRGen: Android: 2.6.0
M. Usman Khan

2
अपनी परियोजना में बिल्ड.ग्रेडल को allprojects.repositiories पर maven {url " jitpack.io "} जोड़ें
tagy22

18

यहाँ एक बिटमैप उत्पन्न करने के लिए मेरा सरल और कामकाजी कार्य है! मैं केवल ZXing1.3.jar का उपयोग करें! मैंने भी सुधार के स्तर को उच्च पर सेट किया है!

PS: x और y उलट हैं, यह सामान्य है, क्योंकि बिटमैट्रिक्स रिवर्स x और y है। यह कोड एक चौकोर छवि के साथ पूरी तरह से काम करता है।

public static Bitmap generateQrCode(String myCodeText) throws WriterException {
    Hashtable<EncodeHintType, ErrorCorrectionLevel> hintMap = new Hashtable<EncodeHintType, ErrorCorrectionLevel>();
    hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H); // H = 30% damage

    QRCodeWriter qrCodeWriter = new QRCodeWriter();

    int size = 256;

    ByteMatrix bitMatrix = qrCodeWriter.encode(myCodeText,BarcodeFormat.QR_CODE, size, size, hintMap);
    int width = bitMatrix.width();
    Bitmap bmp = Bitmap.createBitmap(width, width, Bitmap.Config.RGB_565);
    for (int x = 0; x < width; x++) {
        for (int y = 0; y < width; y++) {
            bmp.setPixel(y, x, bitMatrix.get(x, y)==0 ? Color.BLACK : Color.WHITE);
        }
    }
    return bmp;
}

संपादित करें

बिटमैप के साथ बिटमैप.सेटपिक्सल के बजाय बिटमैप.सेटपिक्सल (...) का उपयोग करना तेज़ है:

        BitMatrix bitMatrix = writer.encode(inputValue, BarcodeFormat.QR_CODE, size, size);
        int width = bitMatrix.getWidth();
        int height = bitMatrix.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] = bitMatrix.get(x, y) ? BLACK : WHITE;
            }
        }

        bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
        bitmap.setPixels(pixels, 0, width, 0, 0, width, height);

12

मैंने zxing-1.3 जार का उपयोग किया और मुझे अन्य उत्तरों से कोड को लागू करने में कुछ बदलाव करने पड़े, इसलिए मैं अपना समाधान दूसरों के लिए छोड़ दूंगा। मैंने निम्नलिखित कार्य किया:

1) zxing-1.3.jar खोजें, इसे डाउनलोड करें और गुणों में जोड़ें (बाहरी जार जोड़ें)।

2) मेरी गतिविधि लेआउट में ImageView जोड़ें और इसे नाम दें (मेरे उदाहरण में यह tnsd_iv_qr था)।

3) qr छवि बनाने के लिए मेरी गतिविधि में कोड शामिल करें (इस उदाहरण में मैं बिटकॉइन भुगतान के लिए क्यूआर बना रहा था):

    QRCodeWriter writer = new QRCodeWriter();
    ImageView tnsd_iv_qr = (ImageView)findViewById(R.id.tnsd_iv_qr);
    try {
        ByteMatrix bitMatrix = writer.encode("bitcoin:"+btc_acc_adress+"?amount="+amountBTC, BarcodeFormat.QR_CODE, 512, 512);
        int width = 512;
        int height = 512;
        Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
        for (int x = 0; x < width; x++) {
            for (int y = 0; y < height; y++) {
                if (bitMatrix.get(x, y)==0)
                    bmp.setPixel(x, y, Color.BLACK);
                else
                    bmp.setPixel(x, y, Color.WHITE);
            }
        }
        tnsd_iv_qr.setImageBitmap(bmp);
    } catch (WriterException e) {
        //Log.e("QR ERROR", ""+e);

    }

यदि कोई सोच रहा है, तो चर "btc_acc_adress" एक स्ट्रिंग (बीटीसी पता के साथ) है, राशि बीटीसी एक डबल है, निश्चित रूप से, लेनदेन राशि।


इसका उपयोग करें: कार्यान्वयन 'meinos7.barcodescanner: zxing: 1.9.13'
एम। उस्मान खान

5

zxing (केवल) एक वेब एपीआई प्रदान नहीं करता है; वास्तव में, वह Google API प्रदान कर रहा है, स्रोत कोड से जो बाद में परियोजना में खुला-खट्टा था।

जैसा कि रोब कहता है कि आप कच्चे बारकोड बनाने के लिए क्यूआर कोड एनकोडर के लिए जावा स्रोत कोड का उपयोग कर सकते हैं और फिर इसे बिटमैप के रूप में प्रस्तुत कर सकते हैं।

मैं अभी भी एक आसान तरीका पेश कर सकता हूं। बारकोड स्कैनर को आप बारकोड को एनकोड करने के इरादे से बुला सकते हैं। आपको कोड की कुछ पंक्तियों की जरूरत है, और परियोजना से दो वर्गों के तहत android-integration। मुख्य एक इंटेंटइन्ग्रेटर है । बस बुलाओ shareText()


टैंक यह उपयोगी लगता है, केवल मैं अपने ऐप के लिए ऑफ़लाइन मोड में किसी भी वेब एपीआई के बायपास करने की उम्मीद कर सकता हूं, लेकिन यह बहुत ही आशाजनक है, मैं इसे
देखूंगा

निश्चित नहीं है कि मैं स्पष्ट था, लेकिन मैं कह रहा हूं कि ज़ोक्सिंग विकल्पों में कोई भी वेब एपीआई शामिल नहीं है
सीन ओवेन

नहीं, यह एंड्रॉइड पर कुछ लाइब्रेरियों का उपयोग करता है, जैसे java.awt
siemanko

नमस्कार, इस धागे को नक़्क़ाशी करने के लिए क्षमा करें, मुझे लगता है कि यह बेहतर है अगर मैंने यहां एक प्रश्न पूछा है। मेरे पास आप लोगों द्वारा बारकोड स्कैनर एप्लीकेशन है (मैं एक क्यूआर कोड को स्कैन करने के लिए उपयोग कर रहा हूं) और अगर मुझे यह उत्तर सही मिला, तो मैं बस यही कर सकता था, अलग-अलग तर्कों के साथ इरादे के माध्यम से बारकोड स्कैनर खोलें और यह एक वापस आ जाएगा डिस्प्ले के लिए बिटमैप क्यूआर कोड?
रज़ग्रीज़

1
@nivwusquorum, नहीं, एनकोडर उपयोग नहीं करता है java.awt, या वेब से कनेक्ट नहीं है , और आप इसे बारकोड स्कैनर एप्लिकेशन में उपयोग कर सकते हैं - एंड्रॉइड पर, इंटरनेट कनेक्शन के बिना। @Razgriz नहीं यह छवि को वापस नहीं करता है, लेकिन आपके लिए स्क्रीन पर छवि दिखाता है। उपयोगकर्ता छवि को बचा सकता है।
सीन ओवेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.