2012-06-30 24 views
5

मैं कैमरे पूर्वावलोकन छवि का उपयोग करने वाले ऐप को विकसित करने के लिए एक DroidX का उपयोग कर रहा हूं। मैं जिस कोड का उपयोग कर रहा हूं वह वेब पर कई स्थानों पर पाया जाता है लेकिन मैंने देखा कि सामान्य विधि "getBestPreviewSize (चौड़ाई, ऊंचाई, कैमरा .parameters)" इस तरह के एक छोटे आकार को वापस कर रहा है कि मानक decodeYUV420SP विधि शून्य सूचक अपवाद के साथ विफल रहता है।GetSupportedPreviewSize रिवर्स चौड़ाई और ऊंचाई

कुछ डिबगिंग का पता चलता है मेरी DroidX के लिए supportedPreviewSizes हैं:

  • 144h एक्स 176w
  • 240h एक्स 320W
  • 288h एक्स 352w
  • 480h एक्स 640w
  • 480h एक्स 720W
  • 448h x 800w
  • 720h x 1280w

ध्यान दें कि ऊंचाई और चौड़ाई के मान एक परिदृश्य परिप्रेक्ष्य देते हैं। यह कैमरा अभिविन्यास के साथ बदल नहीं है। सतह की चौड़ाई और ऊंचाई getBestSupportedPreviewSizes पर 480w x 778h है।

जब मैं कैमरा पास करता हूं। getBestSupportedPreviewSizes() पर पैरामीटर यह 288 x 352 आकार देता है। यहाँ बुला कोड है - मैं माफी माँगता हूँ अगर प्रारूप बंद है, लेकिन यहाँ है चला जाता है:

 if (!cameraConfigured) { 
     Camera.Parameters parameters=camera.getParameters(); 
     Camera.Size size=getBestPreviewSize(pwidth, pheight, parameters); 
     if (size!=null) { 
      parameters.setPreviewSize(size.width, size.height); 
      camera.setParameters(parameters); 
      cameraConfigured=true; 
     } 
    } 

pwidth और pheightsurfaceChanged कॉलबैक के चौड़ाई और ऊंचाई मापदंडों से कर रहे हैं। मैंने कैमरे की कोशिश की है .setDisplayOrientation (90); ऑनस्यूम() में। मैंने मैनिफेस्ट में ओरिएंटेशन ("पोर्ट्रेट") भी लगाया है - इन प्रयासों के 4 संयोजनों में से कोई भी इस व्यवहार को बदलना प्रतीत नहीं होता है।

मेरे विचार उन्हें आसानी से उलटना है, लेकिन यह कई स्तरों पर गलत लगता है। चूंकि यह स्वतंत्र रूप से उपलब्ध कोड कई अन्य उदाहरणों में साबित हुआ है, इसलिए मैं स्पष्ट रूप से इसे गलत मान रहा हूं। क्या कोई इस व्यवहार के लिए कुछ अंतर्दृष्टि प्रदान कर सकता है?

अग्रिम धन्यवाद।

उत्तर

3

कैमरे के बारे में सोचने का सही तरीका लैंडस्केप मोड में है, इसका मतलब है कि जब आप पोर्ट्रेट मोड में इसके बारे में सोच रहे हैं, तो चौड़ाई और ऊंचाई "फ़्लिप" महसूस करती है।

getBestPreviewSize(w, h, p) फ़ंक्शन Camera.Parameters के getSupportedPreviewSizes() फ़ंक्शन के आसपास बस एक रैपर है, इसलिए चौड़ाई और ऊंचाई पारित होने से सबसे अच्छा पूर्वावलोकन दृश्य फ़ंक्शन का परिणाम नहीं बदलेगा।

+0

धन्यवाद डैनियल। हालांकि मैं थोड़ा उलझन में हूँ। जैसा कि मैं इसे समझता हूं, हम सतह के आकार को प्राप्त करने के लिए पास करते हैं BestPreviewSizes() और यह पूर्वावलोकन के साथ सेट करने के लिए सबसे अच्छी फिट चौड़ाई और ऊंचाई देता है। तो यदि चौड़ाई ऊंचाई से छोटी है (पोर्ट्रेट मोड में), तो लौटाई गई चौड़ाई कैमरे की ऊंचाई से छोटी होगी या लौटाई गई ऊंचाई कैमरे की चौड़ाई से छोटी होगी। तो मुझे समझ में नहीं आता कि यह getBestPreviewSize फ़ंक्शन के परिणाम को कैसे प्रभावित नहीं करता है। मेरी सोच में मुझे क्या याद आ रही है? – bob

+0

अधिकांश getBestPreviewSizes() fns मैंने ऑनलाइन देखा है केवल एक पूर्वावलोकन आकार खोजने के लिए चौड़ाई और ऊंचाई का उपयोग करें जो एक अच्छा पहलू अनुपात है। पहलू अनुपात समान है कि ऊंचाई और चौड़ाई फ़्लिप हो या नहीं। –

+0

क्या यह आपके प्रश्न का उत्तर है? –