2011-04-04 16 views
6

मैं एंड्रॉइड फोन से कैमरे का उपयोग कर वीन नंबर बारकोड पढ़ने के लिए एक एप्लीकेशन बना रहा हूं। मुझे नहीं पता कि कैमरे से कैप्चर की गई छवि से बारकोड कैसे पढ़ा जाए। (यानी) क्या वीन संख्या प्रारूप के बारकोड को पढ़ने के लिए कोई कक्षा है मैंने zxing और अन्य libs का उपयोग करने का प्रयास नहीं किया है। धन्यवादक्या छवि से vin संख्या बारकोड पढ़ने के लिए कोई जावा पुस्तकालय है?

नोट: मैंने डीडीजी.एजी और स्टैक ओवरफ्लो में खोज करने की कोशिश की लेकिन कोई उचित समाधान नहीं।

उत्तर

2

According to this thread on google code, zxing को इसका समर्थन करना चाहिए। वे कहते हैं, यह मुद्दा कैमरा रिज़ॉल्यूशन से संबंधित हो सकता है। और वे "अक्कोनीक वीआईएन स्कैनर" का जिक्र करते हैं, जो ज़ेडक्सिंग पर आधारित एंड्रॉइड ऐप लगता है।

1

मैंने पुस्तकालय के रूप में अपने ऐप में ज़िक्सिंग को एकीकृत किया है, और मुझे अपना ऐप ठीक से स्कैन करने और वीआईएन को डीकोड करने के लिए मिला है। मैंने उपलब्ध स्कैन क्षेत्र को चौड़ा करने के लिए मास्क भी बदल दिया।

समस्या निश्चित रूप से कैमरा संकल्प है। एक झुकाव के बिना बड़े, स्पष्ट वीआईएनएस स्कैन। डिंगी विन्स नहीं करते हैं।

यदि मैं स्कैन नहीं करता हूं तो मैन्युअल प्रविष्टि के लिए मैं अपना वीआईएन फ़ील्ड उपलब्ध कर रहा हूं। एक वैध वीआईएन सुनिश्चित करने के लिए चेक अंक विधि चलाने के लिए याद रखें। http://introcs.cs.princeton.edu/java/31datatype/VIN.java.html

1

मैं सफलतापूर्वक (थोड़ी सी मदद के साथ) प्रयोजन द्वारा बारकोड में वापस वैध VIN तार और एनकोड VIN तार को डिकोड करने के लिए ZXing के स्रोत कोड का इस्तेमाल किया है:

मैं एक मैं यहाँ का उपयोग कर सकते पाया। एक पुस्तकालय के रूप में अपने ZXing स्रोत कोड

  1. एकीकृत -

    यहाँ कुंजी है।

    http://damianflannery.wordpress.com/2011/06/13/integrate-zxing-barcode-scanner-into-your-android-app-natively-using-eclipse/

    नोट, वहाँ भी एक अच्छा चर्चा यहाँ क्यों यह एक डेवलपर के दृष्टिकोण से नहीं किया जाना चाहिए के रूप में है, लेकिन कोड मुक्त खुले इस्तेमाल होता है: यहाँ कदम-दर-कदम की कड़ी है और हमें इसे उस फैशन में संशोधित करने की आवश्यकता है जिसे वर्तमान में इरादे के माध्यम से नहीं किया जा सकता है। तो हम जाते हैं।

  2. अपनी प्रोजेक्ट में, इरादे के माध्यम से ज़क्सिंग को कॉल करें (जैसा कि वे अनुशंसा करते हैं); intent.putExtra("SCAN_MODE","ONE_D_MODE");

    मैंने वास्तव में यह दोनों तरीकों से काम किया है (इस लाइन के साथ और बिना) लेकिन यदि आप इसमें बेहतर परिणाम देखते हैं तो यह आपके ऊपर निर्भर करता है। फ्रेम में होने के बाद मुझे आमतौर पर 1/4 सेकेंड फोकस में स्कैन करने के लिए वीआईएन मिलता है।

  3. पूर्वावलोकन रिज़ॉल्यूशन मायने रखता है, क्योंकि कैमरा पूर्वावलोकन एक वैध बारकोड खोजने के लिए डीकोडर को फ़्रेम भेजता है।

    तो ... कैमरा कॉन्फ़िगरेशन मैनेजर.जावा में, एक बड़ा MAX_PREVIEW_PIXELS निर्दिष्ट करें (जो आपके स्क्रीन रिज़ॉल्यूशन से अधिक नहीं है)। मैंने "1024 * 600" का उपयोग किया - मेरे डिवाइस संकल्प। यह कुछ tweaking ले सकता है।

  4. CameraManager.java में

    , अपने तैयार आयत संपादित बड़ा बारकोड के आकार के लिए प्रसार करना चाहते हैं, private static final int MAX_FRAME_WIDTH = screenpixelsinteger; के माध्यम से, मेरा 1000.

  5. public Rect getFramingRect() { में

    है, int width संपादित = screenResolution.x * 1 (या * nothing) हो सकता है, बजाय * 3/4 का।यह फ़्रेमिंग आयत को स्क्रीन रिज़ॉल्यूशन के रूप में चौड़ा करने के लिए विस्तृत करेगा, लेकिन ऊपर निर्दिष्ट MAX_FRAME_WIDTH से अधिक व्यापक नहीं है (यदि एमएफडब्ल्यू कम है तो इसे क्लैंप किया जाएगा)।

अंत में, स्कैन!

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

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