दिलचस्प पोस्ट
मैं एक mysql तालिका में कॉलम के आकार को कैसे संशोधित कर सकता हूँ? मेरे ऐप को अन्य एप्लिकेशन इंस्टॉल या निकाले जाने पर प्रसारित करने के लिए कैसे करें जावा में एक अर्रे सूची को सॉर्ट करने के लिए एजेक्स पोस्ट पर सत्र पुनः लोड नहीं करता IllegalStateException से बचने के लिए रोका जाने पर AsyncTask onPostExecute को कैसे प्रबंधित करें .resx फ़ाइल में सभी संसाधनों के माध्यम से लूप पायथन में दो सूचियों को दोहराते हुए एंड्रॉइड ऐप से वाईफाई नेटवर्क से जुड़ी सभी डिवाइसों का पता कैसे लगाया जाता है पायथन में थ्रेडिंग का उपयोग कैसे करें? नाकआउट के बीच अंतर ऑब्जेक्ट literals बनाम फ़ंक्शन के रूप में घोषित मॉडल देखें अमेज़ॅन एस 3 बिटो – एक फ़ोल्डर कैसे बनाएं? नियमित अभिव्यक्ति क्या संतुलन समूह हैं? WPF पृष्ठभूमि कार्यकर्ता का उपयोग कैसे करें चेरी-चुने-चुने कई कमान कैसे करें '__asm' और '__asm__' के बीच अंतर क्या है?

सीधे मेरी एंड्रॉइड एप्लिकेशन में ZXing लाइब्रेरी को एकीकृत करना

मैं इसे केवल हताशा में लिख रहा हूं 🙂 मुझे एक एंड्रॉइड 1.6 फोन पर स्टैंडअलोन बारकोड स्कैनर (अवधारणा के प्रमाण के रूप में) बनाने के लिए नियुक्त किया गया है।

इसके लिए मैंने ZXing पुस्तकालय की खोज की है

मैं googled है, StackOverflow पर संबंधित विषयों पढ़ा आम बात इस्तेमाल किया और आगे। कुछ भी नहीं लग रहा था, और मैं इस मानसिक नाकाबंदी पर छेद नहीं लगा सकता: /

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

तो मेरी समस्या का सारांश:

  1. एक्लिप्स के माध्यम से मेरी एंड्रॉइड कोड प्रोजेक्ट को ZXing स्रोत उदारीकरण कैसे एकीकृत कर सकता है?
  2. जब एकीकृत … कैसे उपयोग करने के लिए lib, स्कैनिंग समारोह "लोड" करने के लिए?
  3. एक कदम से कदम गाइड लगभग पसंद है क्योंकि मैंने अभी ग्रहण में काम करना शुरू कर दिया है।

मैंने अपने कोड को ZXing स्रोत फ़ोल्डर से एंड्रॉइड फ़ोल्डर पर निर्भर करने की कोशिश की है। जब मैं ऐसा करता हूं, एक हाथी की त्रुटियां उभरती हैं, जो ज्यादातर 'org.apache' (??)

मैं इसे समझ नहीं सकता … इसलिए कुछ संकेत सबसे सहायक होंगे।

अग्रिम में, धन्यवाद 🙂

वेब के समाधान से एकत्रित समाधान "सीधे मेरी एंड्रॉइड एप्लिकेशन में ZXing लाइब्रेरी को एकीकृत करना"

अद्यतन करें! – हल किया गया + GUIDE

मैंने इसे समझने में कामयाब रहा है 🙂 और नीचे से आप चरण-दर-चरण मार्गदर्शिका पढ़ सकते हैं, इसलिए उम्मीद है कि मुझे उसी समस्या के साथ दूसरों की मदद करनी चाहिए;)

  1. अपाचे एंटी इंस्टॉल करें – ( कॉन्फ़िग सहायता के लिए यह यूट्यूब वीडियो देखें )
  2. ZXing होमपेज से ZXing स्रोत डाउनलोड करें और इसे निकालें
  3. विंडोज कमांडलाइन (रन-> सीएमडी) के उपयोग से डाउनलोड किए गए zxing src की रूट डायरेक्टरी पर जाएं।
  4. कमांडलाइन विंडो में – टाइप ant -f core/build.xml दबाएं और अपाचे को इसका जादू करता है [ समस्या हो रही है? ]
  5. एक्लिप्स -> नई एंड्रॉइड प्रोजेक्ट दर्ज करें, जो आपने अभी निकाले गए निर्देशिका में एंड्रॉइड फ़ोल्डर पर आधारित है
  6. परियोजना फ़ोल्डर पर राइट-क्लिक करें -> गुण -> जावा बिल्ड पथ -> लाइब्रेरी -> बाहरी Jars जोड़ें …
  7. नए निकाले फ़ोल्डर पर नेविगेट करें और कोर निर्देशिका खोलें और कोर चुनें … हिट दर्ज करें!

अब आपको अनुवाद और AndroidManifest.xml फ़ाइल में कुछ त्रुटियों को ठीक करना होगा 🙂 अब आप खुशी से संकलित कर सकते हैं, और अब आपके पास ZXing स्रोत के आधार पर एक सक्रिय स्टैंडअलोन बारकोड स्कैनर ऐप होगा;)

खुश कोडन लोग – मुझे आशा है कि यह दूसरों की मदद कर सकता है 🙂

यहां तीसरे पक्ष के एप्लिकेशन को स्थापित किए बिना, ZXing लाइब्रेरी का उपयोग करते हुए QR कोड कैसे तैयार और प्रदर्शित करने के बारे में चरण-दर-चरण मार्गदर्शिका दी गई है। नोट: आपको एएनटी या किसी अन्य बिल्ड टूल के साथ ZXing का निर्माण नहीं करना है। फ़ाइल core.jar रिलीज़ किए गए ज़िप संग्रह में उपलब्ध है (नीचे पढ़ें)

  1. ZXing की नवीनतम रिहाई डाउनलोड करें। – ( ZXing-*.zip )
  2. इस ज़िप संग्रह को निकालें और core/ निर्देशिका के अंतर्गत core/ खोजें।
  3. यदि आप एक्लिप्स आईडीई का उपयोग कर रहे हैं, तो अपने एंड्रॉइड प्रोजेक्ट के libs डायरेक्टरी को core.jar को खींचें और ड्रॉप करें। जब पूछा जाए, तो कॉपी करें चुनें
  4. अपने एंड्रॉइड प्रोजेक्ट के मुख्य पैकेज में दिए गए दो वर्गों की प्रतिलिपि ( Contents.java QRCodeEncoder.java और QRCodeEncoder.java ) कॉपी करें।
  5. यदि आपकी कोई पहले से मौजूद नहीं है तो उत्पन्न क्यूआर कोड को प्रदर्शित करने के लिए अपनी गतिविधि में एक ImageView आइटम बनाएं एक उदाहरण नीचे दिया गया है:
  6. बिटमैप प्रारूप में QR कोड जनरेट करने के लिए नीचे कोड स्निपेट का उपयोग करें और उसे एक ImageView में प्रदर्शित करें।

आपकी गतिविधि लेआउट XML फ़ाइल में जोड़ने के लिए यहां एक ImageView तत्व है:

 <ImageView android:id="@+id/qrCode" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:layout_centerHorizontal="true"/> 

सांकेतिक टुकड़ा:

 // ImageView to display the QR code in. This should be defined in // your Activity's XML layout file ImageView imageView = (ImageView) findViewById(R.id.qrCode); String qrData = "Data I want to encode in QR code"; int qrCodeDimention = 500; QRCodeEncoder qrCodeEncoder = new QRCodeEncoder(qrData, null, Contents.Type.TEXT, BarcodeFormat.QR_CODE.toString(), qrCodeDimention); try { Bitmap bitmap = qrCodeEncoder.encodeAsBitmap(); imageView.setImageBitmap(bitmap); } catch (WriterException e) { e.printStackTrace(); } 

यहाँ Contents.java है। Contents.java

 // // * Copyright (C) 2008 ZXing authors // * // * Licensed under the Apache License, Version 2.0 (the "License"); // * you may not use this file except in compliance with the License. // * You may obtain a copy of the License at // * // * http://www.apache.org/licenses/LICENSE-2.0 // * // * Unless required by applicable law or agreed to in writing, software // * distributed under the License is distributed on an "AS IS" BASIS, // * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // * See the License for the specific language governing permissions and // * limitations under the License. // import android.provider.ContactsContract; public final class Contents { private Contents() { } public static final class Type { // Plain text. Use Intent.putExtra(DATA, string). This can be used for URLs too, but string // must include "http://" or "https://". public static final String TEXT = "TEXT_TYPE"; // An email type. Use Intent.putExtra(DATA, string) where string is the email address. public static final String EMAIL = "EMAIL_TYPE"; // Use Intent.putExtra(DATA, string) where string is the phone number to call. public static final String PHONE = "PHONE_TYPE"; // An SMS type. Use Intent.putExtra(DATA, string) where string is the number to SMS. public static final String SMS = "SMS_TYPE"; public static final String CONTACT = "CONTACT_TYPE"; public static final String LOCATION = "LOCATION_TYPE"; private Type() { } } public static final String URL_KEY = "URL_KEY"; public static final String NOTE_KEY = "NOTE_KEY"; // When using Type.CONTACT, these arrays provide the keys for adding or retrieving multiple phone numbers and addresses. public static final String[] PHONE_KEYS = { ContactsContract.Intents.Insert.PHONE, ContactsContract.Intents.Insert.SECONDARY_PHONE, ContactsContract.Intents.Insert.TERTIARY_PHONE }; public static final String[] PHONE_TYPE_KEYS = { ContactsContract.Intents.Insert.PHONE_TYPE, ContactsContract.Intents.Insert.SECONDARY_PHONE_TYPE, ContactsContract.Intents.Insert.TERTIARY_PHONE_TYPE }; public static final String[] EMAIL_KEYS = { ContactsContract.Intents.Insert.EMAIL, ContactsContract.Intents.Insert.SECONDARY_EMAIL, ContactsContract.Intents.Insert.TERTIARY_EMAIL }; public static final String[] EMAIL_TYPE_KEYS = { ContactsContract.Intents.Insert.EMAIL_TYPE, ContactsContract.Intents.Insert.SECONDARY_EMAIL_TYPE, ContactsContract.Intents.Insert.TERTIARY_EMAIL_TYPE }; } 

और QRCodeEncoder.java

 /* * Copyright (C) 2008 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import android.provider.ContactsContract; import android.graphics.Bitmap; import android.os.Bundle; import android.telephony.PhoneNumberUtils; import java.util.Collection; import java.util.EnumMap; import java.util.HashSet; import java.util.Map; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.WriterException; import com.google.zxing.common.BitMatrix; public final class QRCodeEncoder { private static final int WHITE = 0xFFFFFFFF; private static final int BLACK = 0xFF000000; private int dimension = Integer.MIN_VALUE; private String contents = null; private String displayContents = null; private String title = null; private BarcodeFormat format = null; private boolean encoded = false; public QRCodeEncoder(String data, Bundle bundle, String type, String format, int dimension) { this.dimension = dimension; encoded = encodeContents(data, bundle, type, format); } public String getContents() { return contents; } public String getDisplayContents() { return displayContents; } public String getTitle() { return title; } private boolean encodeContents(String data, Bundle bundle, String type, String formatString) { // Default to QR_CODE if no format given. format = null; if (formatString != null) { try { format = BarcodeFormat.valueOf(formatString); } catch (IllegalArgumentException iae) { // Ignore it then } } if (format == null || format == BarcodeFormat.QR_CODE) { this.format = BarcodeFormat.QR_CODE; encodeQRCodeContents(data, bundle, type); } else if (data != null && data.length() > 0) { contents = data; displayContents = data; title = "Text"; } return contents != null && contents.length() > 0; } private void encodeQRCodeContents(String data, Bundle bundle, String type) { if (type.equals(Contents.Type.TEXT)) { if (data != null && data.length() > 0) { contents = data; displayContents = data; title = "Text"; } } else if (type.equals(Contents.Type.EMAIL)) { data = trim(data); if (data != null) { contents = "mailto:" + data; displayContents = data; title = "E-Mail"; } } else if (type.equals(Contents.Type.PHONE)) { data = trim(data); if (data != null) { contents = "tel:" + data; displayContents = PhoneNumberUtils.formatNumber(data); title = "Phone"; } } else if (type.equals(Contents.Type.SMS)) { data = trim(data); if (data != null) { contents = "sms:" + data; displayContents = PhoneNumberUtils.formatNumber(data); title = "SMS"; } } else if (type.equals(Contents.Type.CONTACT)) { if (bundle != null) { StringBuilder newContents = new StringBuilder(100); StringBuilder newDisplayContents = new StringBuilder(100); newContents.append("MECARD:"); String name = trim(bundle.getString(ContactsContract.Intents.Insert.NAME)); if (name != null) { newContents.append("N:").append(escapeMECARD(name)).append(';'); newDisplayContents.append(name); } String address = trim(bundle.getString(ContactsContract.Intents.Insert.POSTAL)); if (address != null) { newContents.append("ADR:").append(escapeMECARD(address)).append(';'); newDisplayContents.append('\n').append(address); } Collection<String> uniquePhones = new HashSet<String>(Contents.PHONE_KEYS.length); for (int x = 0; x < Contents.PHONE_KEYS.length; x++) { String phone = trim(bundle.getString(Contents.PHONE_KEYS[x])); if (phone != null) { uniquePhones.add(phone); } } for (String phone : uniquePhones) { newContents.append("TEL:").append(escapeMECARD(phone)).append(';'); newDisplayContents.append('\n').append(PhoneNumberUtils.formatNumber(phone)); } Collection<String> uniqueEmails = new HashSet<String>(Contents.EMAIL_KEYS.length); for (int x = 0; x < Contents.EMAIL_KEYS.length; x++) { String email = trim(bundle.getString(Contents.EMAIL_KEYS[x])); if (email != null) { uniqueEmails.add(email); } } for (String email : uniqueEmails) { newContents.append("EMAIL:").append(escapeMECARD(email)).append(';'); newDisplayContents.append('\n').append(email); } String url = trim(bundle.getString(Contents.URL_KEY)); if (url != null) { // escapeMECARD(url) -> wrong escape eg http\://zxing.google.com newContents.append("URL:").append(url).append(';'); newDisplayContents.append('\n').append(url); } String note = trim(bundle.getString(Contents.NOTE_KEY)); if (note != null) { newContents.append("NOTE:").append(escapeMECARD(note)).append(';'); newDisplayContents.append('\n').append(note); } // Make sure we've encoded at least one field. if (newDisplayContents.length() > 0) { newContents.append(';'); contents = newContents.toString(); displayContents = newDisplayContents.toString(); title = "Contact"; } else { contents = null; displayContents = null; } } } else if (type.equals(Contents.Type.LOCATION)) { if (bundle != null) { // These must use Bundle.getFloat(), not getDouble(), it's part of the API. float latitude = bundle.getFloat("LAT", Float.MAX_VALUE); float longitude = bundle.getFloat("LONG", Float.MAX_VALUE); if (latitude != Float.MAX_VALUE && longitude != Float.MAX_VALUE) { contents = "geo:" + latitude + ',' + longitude; displayContents = latitude + "," + longitude; title = "Location"; } } } } public Bitmap encodeAsBitmap() throws WriterException { if (!encoded) return null; Map<EncodeHintType, Object> hints = null; String encoding = guessAppropriateEncoding(contents); if (encoding != null) { hints = new EnumMap<EncodeHintType, Object>(EncodeHintType.class); hints.put(EncodeHintType.CHARACTER_SET, encoding); } MultiFormatWriter writer = new MultiFormatWriter(); BitMatrix result = writer.encode(contents, format, dimension, dimension, hints); int width = result.getWidth(); int height = result.getHeight(); int[] pixels = new int[width * height]; // All are 0, or black, by default for (int y = 0; y < height; y++) { int offset = y * width; for (int x = 0; x < width; x++) { pixels[offset + x] = result.get(x, y) ? BLACK : WHITE; } } Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); bitmap.setPixels(pixels, 0, width, 0, 0, width, height); return bitmap; } private static String guessAppropriateEncoding(CharSequence contents) { // Very crude at the moment for (int i = 0; i < contents.length(); i++) { if (contents.charAt(i) > 0xFF) { return "UTF-8"; } } return null; } private static String trim(String s) { if (s == null) { return null; } String result = s.trim(); return result.length() == 0 ? null : result; } private static String escapeMECARD(String input) { if (input == null || (input.indexOf(':') < 0 && input.indexOf(';') < 0)) { return input; } int length = input.length(); StringBuilder result = new StringBuilder(length); for (int i = 0; i < length; i++) { char c = input.charAt(i); if (c == ':' || c == ';') { result.append('\\'); } result.append(c); } return result.toString(); } } 

 compile 'com.google.zxing:core:2.3.0' 

दुर्भाग्यवश मेरे लिए काम नहीं किया

इसी से मेरा काम बना है:

 dependencies { compile 'com.journeyapps:zxing-android-embedded:3.0.1@aar' compile 'com.google.zxing:core:3.2.0' } 

कृपया यहां लिंक ढूंढें: https://github.com/journeyapps/zxing-android-embedded

एएनटी के साथ इमारतें होने वाली समस्याएं हैं? पढ़ते रहिये

यदि ant -f core/build.xml ऐसा कुछ कहता है:

 Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre6\lib\tools.jar 

तो अपने JAVA_HOME पर्यावरण चर को उचित जावा फ़ोल्डर में सेट करें। मुझे अपने (उपकरण के लिए) उपकरण मिले हैं।

 C:\Program Files\Java\jdk1.6.0_21\lib 

इसलिए मैंने अपने JAVA_HOME को इस पर सेट किया:

 C:\Progra~1\Java\jdk1.6.0_25 

छोटे सिंटैक्स के कारण मैं किसी साइट पर पाया जो कहते हैं:

"यह दृढ़ता से सलाह दी जाती है कि आप एक स्थापना निर्देशिका चुनते हैं जिसमें पथ नाम में रिक्त स्थान शामिल नहीं होता है (उदाहरण के लिए, सी: \ प्रोग्राम फाइल में स्थापित न करें)। अगर जावा ऐसी निर्देशिका में स्थापित है, तो यह जवाबी_एचओएमई पर्यावरण चर एक ऐसे रास्ते से है जिसमें रिक्त स्थान शामिल नहीं है (उदाहरण के लिए, सी: \ प्रोगरा ~ 1); ऐसा करने में विफल होने के कारण कुछ प्रोग्राम जो JAVA_HOME के ​​मूल्य पर निर्भर करते हैं, द्वारा अपवाद दिए गए हैं। "

मैंने फिर से सीएमडी पुनः आरंभ किया (महत्वपूर्ण क्योंकि डॉस शेल केवल लॉन्च करने पर एंव वर्र्स पढ़ता है, इसलिए एक एनवाई वर्ल को बदलने से आपको अपडेट किए जाने वाले नए शेल का उपयोग करने की आवश्यकता होगी)

और अंत में ant -f core/build.xml ने काम किया।

चूंकि कुछ जवाब पुरानी हैं, इसलिए मैं अपना खुद का देना चाहता हूं –

अपने एंड्रॉइड ऐप के रूप में अपने विकी द्वारा सुझाए गए ZXing लाइब्रेरी को एकीकृत करने के लिए, आपको अपने प्रोजेक्ट में 2 जावा फाइल जोड़ने की आवश्यकता है:

  • IntentIntegrator.java
  • IntentResult.java

फिर एंड्रॉइड स्टूडियो में build.gradle फ़ाइल के लिए निम्न पंक्ति जोड़ें:

 dependencies { .... compile 'com.google.zxing:core:3.2.1' } 

या फिर अगर एडीटी-प्लगइन के साथ ईक्लीपस का उपयोग कर अपनी परियोजना के लिब्स उप-डायरेक्टरी (यहाँ पूर्णस्क्रीन विंडोज और फुलस्क्रीन मैक ) को कोर.जर फ़ाइल में जोड़ें:

विंडोज़ स्क्रीनशॉट

अंत में इस कोड को अपने MainActivity.java में जोड़ें:

 public void scanQRCode(View v) { IntentIntegrator integrator = new IntentIntegrator(MainActivity.this); integrator.initiateScan(IntentIntegrator.QR_CODE_TYPES); } @Override public void onActivityResult(int requestCode, int resultCode, Intent intent) { IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, intent); if (result != null) { String contents = result.getContents(); if (contents != null) { showDialog(R.string.result_succeeded, result.toString()); } else { showDialog(R.string.result_failed, getString(R.string.result_failed_why)); } } } private void showDialog(int title, CharSequence message) { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(title); builder.setMessage(message); builder.setPositiveButton(R.string.ok_button, null); builder.show(); } 

परिणामस्वरूप ऐप जेक्सिंग द्वारा बारकोड स्कैनर ऐप स्थापित करने और प्रारंभ करने के लिए कहेंगे (जो स्कैनिंग के बाद स्वचालित रूप से आपकी ऐप पर लौट आएगा):

बारकोड स्कैनर एप

इसके अतिरिक्त, यदि आप अपने खुद के ऐप के लिए प्रेरणा के रूप में ZXing टेस्ट ऐप को बनाने और चलाने के लिए चाहते हैं:

ZXing टेस्ट ऐप

तो आपको GitHub से 4 जावा फाइलों की आवश्यकता है :

  • BenchmarkActivity.java
  • BenchmarkAsyncTask.java
  • BenchmarkItem.java
  • ZXingTestActivity.java

और मेवेन रिपॉजिटरी से 3 जार फ़ाइलें:

  • core.jar
  • android-core.jar
  • android-integration.jar

(आप खुद को mvn package साथ जार फाइल बना सकते हैं – अगर आपका जीआईटीएचब से ZXing की जांच करें और अपने कंप्यूटर पर चींटी और मैवेन टूल्स स्थापित करें)।

नोट: यदि आपकी प्रोजेक्ट जार फ़ाइलों को नहीं पहचानती है, तो आपको प्रोजेक्ट गुणों में जावा संस्करण को अप करने की आवश्यकता हो सकती है:

गुण स्क्रीनशॉट

क्या आपने zxing वेबसाइट पर विकी पृष्ठों को देखा है? ऐसा लगता है कि आपको मिल रहा है , स्टार्टेड , डेवलपर नोट्स और स्कैनिंग ViaIntent सहायक

डाल

 compile 'com.google.zxing:core:2.3.0' 

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

यदि आपको ज़क्सिंग से कोर की ज़रूरत है, तो आप उस प्रक्रिया को छोड़ सकते हैं और प्राप्त- स्टार्टेड विकी पेज से पूर्व निर्मित जेएआर प्राप्त कर सकते हैं।

नवीनतम ZXing (2.2) कोर फ़ोल्डर के तहत कोर फ़ोल्डर नहीं है, लेकिन आप यहां zxing Maven रिपॉजिटरी से core.jar प्राप्त कर सकते हैं

ग्रहण 3.2.2 में ग्रहण करने के लिए कदम से कदम

  1. " https://github.com/zxing/zxing " से zxing-master.zip डाउनलोड करें
  2. Zxing-master.zip खोलें, ज़ेडिंग-मास्टर में "एंड्रॉइड" प्रोजेक्ट आयात करने के लिए एक्लिप्स का उपयोग करें
  3. कोर-3.2.1.jar को " http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/ " से डाउनलोड करें
  4. "एंड्रॉइड" प्रोजेक्ट में "libs" फ़ोल्डर बनाएं और लिब्स फ़ोल्डर में cor-3.2.1.jar को पेस्ट करें
  5. प्रोजेक्ट पर क्लिक करें: "गुण" -> "जावा कम्पाइलर" को स्तर 1.7 पर बदलने के लिए चुनें। फिर एंड्रॉइड 4.4.2+ के लिए "एंड्रॉइड" परिवर्तन "प्रोजेक्ट बिल्ड लक्ष्य" पर क्लिक करें, क्योंकि 1.7 का उपयोग करने के लिए एंड्रॉइड 4.4 के साथ संकलन करना आवश्यक है
  6. अगर "कैमरा कॉन्फ़िगरेशन युटिलिटी जावा" में मौजूद नहीं है, तो "zxing-master / android / app / src / main / java / com / google / zxing / client / android / camera /" में मौजूद नहीं है। आप इसे "zxing-master / android-core / src / main / java / com / google / zxing / client / android / camera /" से कॉपी कर सकते हैं और अपने प्रोजेक्ट को पेस्ट कर सकते हैं।
  7. स्वच्छ और निर्माण परियोजना यदि आपकी परियोजना "स्विच-केस" के बारे में त्रुटि दिखाती है, तो आपको उन्हें "if-else" पर बदल देना चाहिए।
  8. पूरा कर लिया है। स्वच्छ और निर्माण परियोजना
  9. संदर्भ लिंक: एक एंड्रॉइड बारकोड स्कैनिंग ऐप बनाने के लिए ZXing का उपयोग करना

मैंने इसे प्राप्त करने के सभी संभावित तरीकों की कोशिश की और फिर मुझे यात्रा एपप्स द्वारा एक्सजिंग के न्यूनतम संस्करण की खोज की। मैंने ग्रहण के लिए पोर्ट किया है और GitHub पर साझा किया है।

यदि आप ग्रहण का उपयोग कर रहे हैं तो इस प्रोजेक्ट का उपयोग करें: –

https://github.com/hiteshsahu/XZing-Barcode-Scanner-Minified-Eclipse

यदि आप स्टूडियो का उपयोग कर रहे हैं तो इस प्रोजेक्ट का उपयोग करें: –

https://github.com/journeyapps/zxing-android-embedded

लाभ

  1. आपके ऐप में इनबिल्ट बारकोड स्कैनर को प्लेस्टोर का उपयोग करके तृतीय पक्ष एप्लिकेशन इंस्टॉल करने की आवश्यकता नहीं है।

  2. आपको कोर, एंड्रॉइड क्लाइंट आदि के बीच उलझन में जाने की आवश्यकता नहीं है, बस इस पैकेज को छोड़ दें और अपनी प्रोजेक्ट में रिलीज लेआउट करें और आप जाने के लिए अच्छा है। केवल जार की आवश्यकता है com.google.zxing: कोर: 3.2.0 जिसमें से आप डाउनलोड कर सकते हैं

    http://mvnrepository.com/artifact/com.google.zxing/core/3.2.0

  3. तुलना की तुलना में नीचे चित्रों को देखने के लिए कई पैकेज जोड़ने की जरूरत नहीं है

इससे पहले: –

यहां छवि विवरण दर्ज करें

बाद :-

यहां छवि विवरण दर्ज करें

  1. सबसे महत्वपूर्ण हिस्सा यह है कि वे अत्यधिक अनुकूलन योग्य हैं । आप फ्लैश लाइट जोड़ सकते हैं, इसका उपयोग टुकड़ा और समर्थन उन्मुखीकरण परिवर्तन में कर सकते हैं।

  2. आप बारकोड स्कैनिंग के लिए कॉर्डोवा ऐप में इस कैप्चर गतिविधि का उपयोग कर सकते हैं।

ऐप मेनिफेस्ट में आपकी कैप्चर गतिविधि इस तरह दिखाई देगी

  <activity android:name="com.journeyapps.barcodescanner.CaptureActivity" android:clearTaskOnLaunch="true" android:configChanges="orientation|keyboardHidden" android:exported="false" android:screenOrientation="fullSensor" android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:windowSoftInputMode="stateAlwaysHidden" > <intent-filter> <action android:name="com.google.zxing.client.android.SCAN" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> 

और प्लगइन इस तरह दिखाई देगा

 public class BarcodeScanner extends CordovaPlugin { public static final int REQUEST_CODE = 0x0ba7c0de; private static final String SCAN = "scan"; private static final String CANCELLED = "cancelled"; private static final String FORMAT = "format"; private static final String TEXT = "text"; private static final String SCAN_INTENT = "com.google.zxing.client.android.SCAN"; private static final String LOG_TAG = "BarcodeScanner"; private CallbackContext callbackContext; /** * Constructor. */ public BarcodeScanner() { } /** * Executes the request. * * This method is called from the WebView thread. To do a non-trivial amount of work, use: * cordova.getThreadPool().execute(runnable); * * To run on the UI thread, use: * cordova.getActivity().runOnUiThread(runnable); * * @param action The action to execute. * @param args The exec() arguments. * @param callbackContext The callback context used when calling back into JavaScript. * @return Whether the action was valid. * * @sa https://github.com/apache/cordova-android/blob/master/framework/src/org/apache/cordova/CordovaPlugin.java */ @Override public boolean execute(String action, JSONArray args, CallbackContext callbackContext) { this.callbackContext = callbackContext; if (action.equals(SCAN)) { scan(args); } else { return false; } return true; } /** * Starts an intent to scan and decode a barcode. */ public void scan(JSONArray args) { Intent intentScan = new Intent(SCAN_INTENT); intentScan.addCategory(Intent.CATEGORY_DEFAULT); // add config as intent extras if(args.length() > 0) { JSONObject obj; JSONArray names; String key; Object value; for(int i=0; i<args.length(); i++) { try { obj = args.getJSONObject(i); } catch(JSONException e) { Log.i("CordovaLog", e.getLocalizedMessage()); continue; } names = obj.names(); for(int j=0; j<names.length(); j++) { try { key = names.getString(j); value = obj.get(key); if(value instanceof Integer) { intentScan.putExtra(key, (Integer)value); } else if(value instanceof String) { intentScan.putExtra(key, (String)value); } } catch(JSONException e) { Log.i("CordovaLog", e.getLocalizedMessage()); continue; } } } } // avoid calling other phonegap apps intentScan.setPackage(this.cordova.getActivity().getApplicationContext().getPackageName()); this.cordova.startActivityForResult((CordovaPlugin) this, intentScan, REQUEST_CODE); } /** * Called when the barcode scanner intent completes. * * @param requestCode The request code originally supplied to startActivityForResult(), * allowing you to identify who this result came from. * @param resultCode The integer result code returned by the child activity through its setResult(). * @param intent An Intent, which can return result data to the caller (various data can be attached to Intent "extras"). */ @Override public void onActivityResult(int requestCode, int resultCode, Intent intent) { if (requestCode == REQUEST_CODE) { if (resultCode == Activity.RESULT_OK) { JSONObject obj = new JSONObject(); try { obj.put(TEXT, intent.getStringExtra("SCAN_RESULT")); obj.put(FORMAT, intent.getStringExtra("SCAN_RESULT_FORMAT")); obj.put(CANCELLED, false); } catch (JSONException e) { Log.d(LOG_TAG, "JSONException "+e.getMessage()); } this.callbackContext.success(obj); } else if (resultCode == Activity.RESULT_CANCELED) { this.callbackContext.success(""); } else { this.callbackContext.error("Technical Problem"); } } } } 

खुश एकता !!

Zxing लोगों ने 1.7 के साथ एक एंड्रॉइड परियोजना बनाने में आसान बना दिया है यह उतना दर्दनाक नहीं था जितना कि इसका इस्तेमाल होता था यह किसी ऐसे व्यक्ति के लिए एक त्वरित ब्लॉग है जो एंड्रॉइड के लिए जल्दी से एक ज़ेडिंग प्रोजेक्ट बनाना चाहते हैं।

  • Zxing.org से zxing स्रोतों को चेक करें
  • अपने ग्रहण पर एक एंड्रॉइड प्रोजेक्ट बनाएं
  • Main.xml हटाएं
  • "Src" निर्देशिका पर राइट क्लिक करें और आयात को दबाएं उल्लिखित क्रम में निम्नलिखित निर्देशिका ब्राउज़ करें जैसा कि आप उन्हें एक-एक करके आयात करने के लिए जोड़ते हैं, यह सुनिश्चित करें कि आपके पास आयात विज़ार्ड के संपादन क्षेत्र में src निर्देशिका है और यह कि आप बाएं डायरेक्टरी ट्री पर केवल "कॉम" निर्देशिका का चयन करें। स्रोत का चयन न करें
  • कोर
  • android-एकीकरण
  • एंड्रॉयड
  • सुनिश्चित करें कि आपका एंड्रॉइड एसडीके संस्करण 9 है, कुछ भी कम और एंड्रोमैनफास्ट। एक्सएमएल रो जाएगा।
  • स्ट्रिंग्स.एक्सएमएल में से किसी एक भाषा में पालना होगा, केवल 'चरित्र' से पहले

1.7 (20 जून चेकआउट) zxing के लिए एक एंड्रॉइड प्रोजेक्ट।

http://www.4shared.com/file/bFx8Y5Ys/zXingJune2010.html (अब तक उपलब्ध नहीं है )

बाहरी लिब का उपयोग क्यों करते हैं, जब Google Play सेवाओं (संस्करण 7.8.0 से ) में बारकोड डीकोडर शामिल है

बहुत आसान दृष्टिकोण

बस अपने ऐप लेवल gradle फ़ाइल में निर्भरता शामिल करें

 compile 'com.journeyapps:zxing-android-embedded:3.0.1@aar' compile 'com.google.zxing:core:3.2.0' 

अपनी XML फ़ाइल में एक बटन को परिभाषित करें और ओनक्रिएट () में जावा फ़ाइल में कोड लिखकर और OnClick श्रोता बटन के अंदर

 new IntentIntegrator(this).initiateScan(); 

और जावा फ़ाइल के ओनक्रेट () के बाद कोड नीचे लिखें

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); if(result != null) { if(result.getContents() == null) { Log.d("MainActivity", "Cancelled scan"); Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show(); } else { Log.d("MainActivity", "Scanned"); st_scanned_result = result.getContents(); Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show(); } } } 

मैंने हाल ही में आईओएस और एंड्रॉइड दोनों में Google मोबाइल विज़ुअल का उपयोग किया है। मैं अत्यधिक Google बारकोड स्कैन का उपयोग करने की सलाह देता हूं। यह किसी भी अभिविन्यास के साथ बहुत संवेदनशील है और प्रसंस्करण समय बहुत तेज है। इसे Google मोबाइल विज़न कहा जाता है

बारकोड स्कैनर एपीआई किसी भी अभिविन्यास में वास्तविक समय में बारकोड का पता लगाता है। आप एक ही समय में विभिन्न प्रारूपों में कई बारकोड का पता लगा सकते हैं और पार्स कर सकते हैं।

https://developers.google.com/vision/

https://codelabs.developers.google.com/codelabs/bar-codes/#0

मैंने सिर्फ एक विधि लिखा है, जो डिकोड बार कोड उत्पन्न करता है, Bitmap से String

CaptureActivity बिना, यह ठीक उसी प्रकार से किया जाता है, जो अनुरोध किया जा रहा है …

इसलिए, कोई build.gradle में android-integration लायब्रेरी को छोड़ सकता है:

 dependencies { // https://mvnrepository.com/artifact/com.google.zxing compile('com.google.zxing:core:3.3.0') compile('com.google.zxing:android-core:3.3.0') } 

निम्नलिखित के रूप में विधि (जो वास्तव में जेयूनेट परीक्षण के भीतर उत्पन्न बार कोड उत्पन्न करती है):

 import android.graphics.Bitmap; import com.google.zxing.BinaryBitmap; import com.google.zxing.LuminanceSource; import com.google.zxing.MultiFormatReader; import com.google.zxing.NotFoundException; import com.google.zxing.RGBLuminanceSource; import com.google.zxing.common.HybridBinarizer; import com.google.zxing.Result; protected String decode(Bitmap bitmap) { MultiFormatReader reader = new MultiFormatReader(); String barcode = null; int[] intArray = new int[bitmap.getWidth() * bitmap.getHeight()]; bitmap.getPixels(intArray, 0, bitmap.getWidth(), 0, 0, bitmap.getWidth(), bitmap.getHeight()); LuminanceSource source = new RGBLuminanceSource(bitmap.getWidth(), bitmap.getHeight(), intArray); BinaryBitmap binary = new BinaryBitmap(new HybridBinarizer(source)); try { Result result = reader.decode(binary); // BarcodeFormat format = result.getBarcodeFormat(); // ResultPoint[] points = result.getResultPoints(); // byte[] bytes = result.getRawBytes(); barcode = result.getText(); } catch (NotFoundException e) { e.printStackTrace(); } return barcode; }