কীভাবে একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশনটির জন্য একটি কিউআর কোড তৈরি করবেন? [বন্ধ]


92

আমার অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে আমাকে একটি কিআরসি কোড তৈরি করতে হবে এবং আমার একটি লাইব্রেরি বা উত্স কোডের প্রয়োজন যা আমাকে একটি অ্যান্ড্রয়েড অ্যাপ্লিকেশনটিতে একটি কিউআর কোড তৈরি করতে দেয়।

আমার যে লাইব্রেরিটি দরকার তা অবশ্যই:

  1. জলছবি ছেড়ে যাবেন না ( onbarcodeলাইব্রেরির মতো )
  2. Qrcode তৈরি করতে ওয়েব পরিষেবা API ব্যবহার করবেন না (গুগলের লাইব্রেরি জেক্সিংয়ের মতো)
  3. তৃতীয় পক্ষের ইনস্টলারগুলির প্রয়োজন নেই (কিউআর ড্রয়েডের মতো)

আমি ইতিমধ্যে আইফোনের জন্য এই জাতীয় কোড তৈরি করেছি (অবজেক্টিভ-সি) তবে আমার নিজের কিউআর কোড জেনারেটর তৈরি করার সময় না পাওয়া পর্যন্ত অ্যান্ড্রয়েডের জন্য আমার দ্রুত সমাধানের প্রয়োজন। এটি আমার প্রথম অ্যান্ড্রয়েড প্রকল্প তাই কোনও সাহায্যের প্রশংসা করা হবে।


আপনি এর ওপেন সোর্স
zxing

4
জেডএক্সিং কোনও ওয়েব এপিআই নয়, নীচে দেখুন
শন ওভেন

4
কিউআর বিটম্যাপ উত্পন্ন করার জন্য আমার সাধারণ পরীক্ষার অ্যাপটি এখানে চেষ্টা করুন: stackoverflow.com/a/30529519/165071
আলেকজান্ডার ফারবার

উত্তর:


68

আপনি কি জেডএক্সিং-এর দিকে নজর রেখেছেন ? বারকোড তৈরি করতে আমি এটি সফলভাবে ব্যবহার করছি। আপনি বিটকয়েন অ্যাপ্লিকেশন এসসিআর-তে একটি পূর্ণ কাজের উদাহরণ দেখতে পাবেন

// 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 }

আমি গিথুব থেকে বিটকয়েন ওপেন সোর্সটি কাঁটা করেছি এবং আমার অ্যান্ড্রয়েড ২.২ ডিভাইসে ট্রাইআউট করেছি, অ্যাপ্লিকেশন ফোর্স বন্ধ আছে, কিছু ভুল?
রায় লি

দুঃখিত আমি এক বছরেরও বেশি সময় ধরে এই অ্যাপটির দিকে নজর দিইনি। শানের নীচে উল্লিখিত হিসাবে, এখানে জক্সিং
রব

@ রব এটি কি ব্যবহারকারী সংজ্ঞায়িত সংখ্যার কিউআর কোড উত্পন্ন করবে? লাফবেটগুলির সাথে কেবল সংখ্যা বা সংখ্যা
এরাম

@ ইরাম এটি আপনার যে কোনও আলফা সংখ্যক স্ট্রিং সরবরাহ করবে তার জন্য একটি বারকোড তৈরি করবে
রব

এটি ব্যবহার করুন: বাস্তবায়ন 'me.dm7.barcodescanner: zxing: 1.9.13'
এম উসমান খান

97

জেডক্সিংয়ের সাথে এটি কিউআর তৈরির জন্য আমার কোড

 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();
    }

আমার জন্য কাজ করেছেন। সহজ যোগ।
রুন 13

তোমাকে ধন্যবাদ. আমার জন্য কাজ।
রওশন শান

@ স্টেফানো এটি কোনও এন জেনারেট করতে পারে? অনন্য কিউআর কোড?
আশীষ তিওয়ারি

কবজ g88 এর মতো কাজ করেছে !! +1 এমন কোনও বিকল্প নেই যাতে আমি এতে কিছু লোগো যুক্ত করতে পারি?
অমিত

4
মেমরি ফাঁস এড়াতে, তৈরি করা বিটম্যাপ মেমরি পরিচালনা করতে ভুলবেন না Bitmap.createBitmap
gMale

43

সম্ভবত এই পুরানো বিষয় তবে আমি খুঁজে পেয়েছি যে এই লাইব্রেরিটি খুব সহায়ক এবং সহজেই ব্যবহারযোগ্য

কিউআরগেন

অ্যান্ড্রয়েডে এটি ব্যবহারের জন্য উদাহরণ

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

4
এটি সহজ এবং কার্যক্ষম সমাধান!
জোহাব আলী

4
.বিটম্যাপ () পাওয়া যায় নি
মার্সেল অ্যাডেল

আপনার অ্যান্ড্রয়েড নির্ভরতা ব্যবহার করা উচিত: implementation 'com.github.kenglxn.QRGen:android:[version]' এবং এর মতো import net.glxn.qrgen.android.QRCode
কিউআরকোড

4
সমাধান করতে ব্যর্থ: com.github.kenglxn.QR জেন: অ্যান্ড্রয়েড: 2.6.0
এম উসমান খান

4
আপনার প্রকল্পে build.gradle সব প্রকল্পগুলিতে maven {url " jitpack.io " add যুক্ত করুন
ট্যাগ করুন 22

18

এখানে একটি বিটম্যাপ উত্পন্ন করার জন্য আমার সহজ এবং কার্যকারী ফাংশন! আমি কেবল জেডএক্সিং ১.৩.জার ব্যবহার করি! আমিও সংশোধন স্তর উচ্চে সেট করেছি!

PS: x এবং y বিপরীত হয়, এটি স্বাভাবিক, কারণ বিটম্যাট্রিক্স বিপরীত এক্স এবং 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) আমার ক্রিয়াকলাপের বিন্যাসে চিত্র ভিউ যুক্ত করুন এবং এটির নাম দিন (আমার উদাহরণে এটি ছিল tnsd_iv_qr) was

3) কিউআর চিত্র তৈরি করতে আমার ক্রিয়াকলাপে কোড অন্তর্ভুক্ত করুন (এই উদাহরণে আমি বিটকয়েন প্রদানের জন্য কিউআর তৈরি করছিলাম):

    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);

    }

যদি কেউ ভাবছেন, পরিবর্তনশীল "বিটিসি_এইচসি_এড্রেস" একটি স্ট্রিং (বিটিসি অ্যাড্রেস সহ), পরিমাণ বিটিসি অবশ্যই দ্বিগুণ, লেনদেনের পরিমাণের সাথে ডাবল।


এটি ব্যবহার করুন: বাস্তবায়ন 'me.dm7.barcodescanner: zxing: 1.9.13'
এম উসমান খান

5

zxing (কেবল) একটি ওয়েব এপিআই সরবরাহ করে না; প্রকৃতপক্ষে, এটি গুগল এপিআই সরবরাহ করে, উত্স কোড থেকে যা পরে প্রকল্পে ওপেন-সোর্স করা হয়েছিল।

রব এখানে যেমন বলেছে আপনি কিউআর কোড এনকোডারটির জন্য একটি কাঁচা বারকোড তৈরি করতে জাভা উত্স কোডটি ব্যবহার করতে পারেন এবং তারপরে এটি বিটম্যাপ হিসাবে রেন্ডার করতে পারেন।

আমি এখনও একটি সহজ উপায় অফার করতে পারেন। একটি বারকোড এনকোড করার জন্য আপনি ইন্টেন্ট দ্বারা বারকোড স্ক্যানার কল করতে পারেন। আপনাকে কোডের কয়েকটি লাইন এবং প্রকল্পের অধীনে দুটি ক্লাসের প্রয়োজন android-integrationমূলটি হ'ল ইনটেন্টিঞ্জ্রেটার । শুধু কল shareText()


ট্যাঙ্কগুলি এটি কার্যকর বলে মনে হচ্ছে, তবে আমি কেবলমাত্র আমার অ্যাপ্লিকেশনটির জন্য অফলাইন মোডে কোনও ওয়েব এপিআইয়ের বাইপাসটি আশা করব, তবে এটি খুব আশাব্যঞ্জক, আমি এটিতে নজর দেব
রাদু

নিশ্চিত ছিলাম না যে আমি পরিষ্কার ছিলাম তবে আমি বলছি যে জক্সিং বিকল্পগুলিতে কোনও ওয়েব এপিআই জড়িত না
সান ওওন

নাহ, এটি অ্যান্ড্রয়েডে
জাভা.আওটের

হ্যালো, এই থ্রেডটির জন্য দুঃখিত, আমি এখানে একটি প্রশ্ন জিজ্ঞাসা করা ভাল বলে মনে করি। আমার কাছে আপনার কাছে বারকোড স্ক্যানার অ্যাপ্লিকেশন রয়েছে (আমি এটি একটি কিউআর কোড স্ক্যান করতে ব্যবহার করছি) এবং যদি আমার এই উত্তরটি সঠিকভাবে পাওয়া যায় তবে আমি ঠিক একই কাজ করতে পারতাম, বিভিন্ন যুক্তিযুক্ত উদ্দেশ্য সহ বারকোড স্ক্যানারটি খুলতে পারি এবং এটি একটি ফিরিয়ে দেয় প্রদর্শনের জন্য বিটম্যাপ কিউআর কোড?
রাগগ্রিজ

4
@ নিনভাসকুরিয়াম, না, এনকোডারটি java.awtওয়েব ব্যবহার করে না , বা ওয়েবের সাথে সংযুক্ত হয় না এবং আপনি এটি ইন্টারনেট সংযোগ ছাড়াই বারকোড স্ক্যানার অ্যাপ্লিকেশন - Android এ ব্যবহার করতে পারেন। @ রাগ্রগ্রিজ না এটি চিত্রটি ফেরায় না, তবে আপনার জন্য পর্দায় চিত্রটি দেখায়। ব্যবহারকারী ছবিটি সংরক্ষণ করতে পারেন।
শন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.