2012-04-12 11 views
5

मैं ज़ेडएक्सिंग बारकोड स्कैनिंग लाइब्रेरी का उपयोग कर सफल रहा हूं, लेकिन केवल लैंडस्केप मोड पर।एंड्रॉइड + जेएक्सिंग बारकोड स्कैनिंग लाइब्रेरी - कस्टम आकार और अभिविन्यास

मैं कैमरा पूर्वावलोकन को पोर्ट्रेट मोड पर सेट करने में भी सफल रहा हूं और इसे सही तरीके से दिखा रहा हूं (खींचने के बिना), लेकिन अब बारकोड बिल्कुल काम नहीं करता है। परिवर्तन मैं क्रम में सही ढंग से कैमरा दिखाने के लिए "CameraConfigurationManager.java" पर "setDesiredCameraParameters" करने के लिए बनाया है here're:

void setDesiredCameraParameters(Camera camera) 
{ 
    Camera.Parameters parameters = camera.getParameters(); 
    Log.d(TAG, "Setting preview size: " + cameraResolution); 
    setFlash(parameters); 
    setZoom(parameters); 
    camera.setDisplayOrientation(90); 
    parameters.set("rotation", 90); 
    parameters.setPreviewSize(cameraResolution.y, cameraResolution.x); 
    camera.setParameters(parameters); 
} 

मैं कुछ अन्य स्थानों पर उल्लेख किया समाधान की कोशिश की है, लेकिन या तो वे डॉन काम नहीं करते हैं, या वे काम करते हैं लेकिन कैमरे के पूर्वावलोकन को सही ढंग से नहीं दिखा सकते हैं। उदाहरण: How to use Zxing in portrait mode? http://code.google.com/p/zxing/issues/detail?id=178#c46 https://github.com/pplante/zxing-android/issues

जब मैं उस के साथ समाप्त हो गया हूँ, मैं भी स्कैनिंग के लिए आयत के स्थान & आकार अनुकूलित करने के लिए की जरूरत है। मुझे पता है कि मुझे "CameraManager.java" पर "setManualFramingRect" को बदलने की आवश्यकता है, लेकिन मुझे यकीन नहीं है कि मैं इसे सही तरीके से करता हूं।

public void setManualFramingRect(Rect rect) 
{ 
    if (initialized) 
    { 
     Point screenResolution = configManager.getScreenResolution(); 
     if (rect.right >= screenResolution.x) 
      rect.right = screenResolution.x - 1; 
     if (rect.left < 0) 
      rect.left = 0; 
     if (rect.bottom >= screenResolution.y) 
      rect.bottom = screenResolution.y - 1; 
     if (rect.top < 0) 
      rect.top = 0; 
     framingRect = rect; 
     Log.d(TAG, "Calculated manual framing rect: " + framingRect); 
     framingRectInPreview = null; 
    } 
    else 
     _requestedFramingRect = new Rect(rect); 
} 
निश्चित रूप से

, मैं "openDriver" बदल दिया है कॉल करने के लिए:

if (_requestedFramingRect != null) 
    setManualFramingRect(_requestedFramingRect); 

मेरी मदद कृपया यहाँ उस के लिए कोड है।


संपादित करें: अब मुझे पता चला है कि यह कुछ उपकरणों पर काम नहीं करता है। यह शुरुआत में दुर्घटनाग्रस्त हो जाता है, और यदि आप डीबग करते हैं, तो आप देख सकते हैं कि पूर्वावलोकन भी अच्छा काम नहीं करता है।

+1

मुझे लगता है कि अगला पोस्ट मेरे प्रश्न का उत्तर दे सकता है: http://stackoverflow.com/questions/16252791/how-to-show-zxing-camera-in-portrait-mode-android/16252917#16252917। हालांकि, चूंकि मैंने ज़क्सिंग लाइब्रेरी का परीक्षण किया है, इसलिए मुझे बहुत समय लगता है, मुझे नहीं पता कि यह कितना अच्छा काम करता है। –

उत्तर

2

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

+0

मैंने जिस लिंक को पहले ही लिखा है, मैंने कोशिश की - यह काम नहीं किया। क्या आप किसी ऐसे व्यक्ति के बारे में जानते हैं जो इसे करने में सफल रहा है? –

+0

हां, मैंने किया: https://play.google.com/store/apps/details?id=com.srowen.bs.android –

+0

अच्छी तरह से मेरा मतलब था कि अगर कोई इस समस्या का समाधान साझा कर सकता है (बिना लागत के)। :) –

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