2011-12-14 6 views
5

में लाइव मोड में एक क्यूआर कोड स्कैन कैसे करें Google Zxing एक छवि की अपेक्षा करता है। क्या कोई मुझे लाइव स्कैनिंग के लिए इसे साफ तरीके से काम करने के तरीके के बारे में बता सकता है (यानी उपयोगकर्ता डिवाइस को क्यूआर कोड पर इंगित करता है और स्कैन होता है; उपयोगकर्ता को कोई छवि नहीं लेनी पड़ती है)? मैं निम्नलिखित दो पहलुओं का सामना करना पड़ा:ब्लैकबेरी ओएस 5

  1. कुछ धागे एक टाइमर और घटना इंजेक्शन का उपयोग करने के लिए लगातार चित्र लेने के लिए सुझाव दिया - लेकिन इस दृष्टिकोण डिवाइस पर बहुत अधिक भूमि के ऊपर उठाना पड़ सकता
  2. कुछ अन्य सूत्र का सुझाव दिया है कि लाइव स्कैनिंग केवल ओएस 6 और ऊपर से संभव है क्योंकि आरआईएम 6 से नीचे ओएस संस्करणों में उन एपीआई का पर्दाफाश नहीं करता है - लेकिन मैं इस प्रभाव के लिए कोई आधिकारिक बयान नहीं ढूंढ पा रहा हूं।

ज़ेक्सिंग के अलावा बीबी ओएस 5 के लिए इसे प्राप्त करने के लिए कोई अन्य पुस्तकालय हैं?

अग्रिम

+0

zxing प्रति छवि की अपेक्षा नहीं करता है, यह स्कैनिंग के लिए मूल पुस्तकालय है। यह एक वीडियो फ़ीड प्रदान करने के लिए ऐप/मंच पर है, या नहीं। बीबीओएस के पहले संस्करण में पूर्वावलोकन फ़ीड प्राप्त करने का कोई तरीका नहीं था। –

+0

@ सेनऑवेन - तकनीकी रूप से, afaik, zxing बिटमैप की अपेक्षा करता है (आप LuminanceSource क्लास देख सकते हैं)! तो, कोई एक वीडियो से फ्रेम पकड़ सकता है और उन्हें संसाधित कर सकता है! दुर्भाग्यवश, यह संभव नहीं है ओएस 5 और नीचे! –

+0

सहमत हैं। (मैं लेखक हूं।) आपकी पोस्ट का सुझाव है कि पुस्तकालय की आवश्यकता है कि स्रोत एक छवि फ़ाइल है; यह परवाह नहीं करता। यदि आपके पास वीडियो फीड से फ़्रेम हैं, तो इसे कुछ LuminanceSource के माध्यम से काम करने के लिए बनाया जा सकता है। –

उत्तर

4

This library allows you to do live scanning on OS5 धन्यवाद। यह ZXing लाइब्रेरी में एक इंटरफेस के रूप में काम करता है।

चेतावनी दी जानी चाहिए, हालांकि ओएस 5 डिवाइस FocusControl पर पूरी तरह से कार्यान्वित नहीं किया गया है इसलिए स्कैनिंग बारकोड करीब बंद हो जाएगा। वर्कअराउंड VideoControl.getSnapshot() का उपयोग करना है जो कैमरे को फोकस करने के लिए मजबूर करने का एकमात्र तरीका है।

+1

लाइब्रेरी सही @ डोंटर्नर काम करती है! धन्यवाद! हालांकि, मुझे यह इंगित करना चाहिए कि यह पुस्तकालय मैंने सूचीबद्ध 1 दृष्टिकोण के एक संशोधित संस्करण का उपयोग किया है - यह समय-समय पर स्क्रीनशॉट (प्रत्येक 2 एस) को कैप्चर करता है और इसे क्यूआर कोड के लिए संसाधित करता है! एक महान दृष्टिकोण की तरह नहीं लगता है, लेकिन मुझे लगता है कि ओएस 5 और नीचे के लिए कोई अन्य विकल्प नहीं है :( –

1

"लाइव स्कैनिंग" सुविधा का उपयोग करने के लिए आपको बारकोड एपीआई का उपयोग करने की आवश्यकता है, जो केवल ओएस 6.0 में उपलब्ध ZXing के शीर्ष पर एक परत है।

Here आपके पास बारकोड एपीआई पर आधिकारिक अधिकार है। 5.0 में, आपको VideoControl पर आधारित एक कस्टम तंत्र लागू करना होगा। वर्कअराउंड को लागू करने के लिए, आप समय-समय पर स्नैपशॉट ले सकते हैं और उन्हें डीकोड करने का प्रयास कर सकते हैं, या किसी भी तरह से वीडियो फीड से फ़्रेम कैप्चर कर सकते हैं।
जैसा कि अन्य उत्तर कहता है, ऑटोफोकस के बिना डिवाइस में, FocusControl काम नहीं करेगा। इस मामले में मैं आपको इसके बजाय कुछ ज़ूम लागू करने का सुझाव देता हूं (ZoomControl कक्षा का उपयोग करके)। यह उपयोगकर्ता को क्यूआरकोड से ब्लैकबेरी को स्क्रीन पर देखने में सक्षम होने के लिए मजबूर करता है, इस प्रकार कैप्चर की गई छवि की परिभाषा को बढ़ाता है, जिससे बदले में बारकोड का पता लगाने की संभावना बढ़ जाती है।

+0

यह सख्ती से सच नहीं है, आप समय-समय पर इनपुट वीडियो फ़ीड को डीकोड करने का प्रयास करके "लाइव स्कैनिंग" कर सकते हैं। समस्या ओएस 5 में यह है कि आपके पास फोकस पर कोई नियंत्रण नहीं है, इसलिए यदि कोड कैमरे के नजदीक है तो आप एक अस्पष्ट छवि को डीकोड कर देंगे। – donturner

+0

और केवल स्पष्टीकरण के लिए, कई ओएस 5 डिवाइस ** ** में ऑटोफोकस क्षमता है उनके कैमरा हार्डवेयर, लेकिन ओएस 5 एपीआई इसे एक्सेस करने की अनुमति नहीं देता है। – donturner

+0

@ डोंटर्नर आप स्नैपशॉट्स के बारे में सही हैं। और फोकस के बारे में, मैंने फोकस कंट्रोल 5.0 पर 'फोकस कंट्रोल.ऑटो' पर सेट किया है, यह काम करता है आपका डिवाइस ऑटोफोकस सक्षम है।मनमाने ढंग से फोकस स्तर के साथ कभी कोशिश नहीं की। छोटी दूरी पर धुंधलापन को काम करने के लिए, आप ज़ूम को अधिकतम स्तर पर 'ज़ूमकंट्रोल' के साथ सेट कर सकते हैं। असल में यह है कि बारकोड एपीआई में लाइव स्कैन स्क्रीन क्या करती है। –

संबंधित मुद्दे