2013-02-22 13 views
8
में बहु लेंस या पूर्वावलोकन एक कैमरे का उपयोग कर बनाने के लिए

कैसे एंड्रॉयड

मैं ऊपर की तरह कुछ बनाने के लिए, कि तीन बॉक्स, एक कैमरा पूर्वावलोकन तरह होगा चाहता था। क्या करना है इस पर कोई विचार या अवधारणा?

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

private CameraPreview mPreview; 
    private CameraPreview mPreview2; 
    private CameraPreview mPreview3; 
    private FrameLayout preview; 
    private FrameLayout preview2; 
    private FrameLayout preview3; 

    mCamera=getCameraInstance(); 
    mCamera2=getCameraInstance(); 
    mCamera3=getCameraInstance(); 

    mPreview=new CameraPreview(getApplicationContext(), mCamera); 
    mPreview2=new CameraPreview(getApplicationContext(), mCamera2); 
    mPreview3=new CameraPreview(getApplicationContext(), mCamera3); 

    preview=(FrameLayout)findViewById(R.id.camSetA_qr1); 
    preview.addView(mPreview); 
    preview2=(FrameLayout)findViewById(R.id.camSetA_qr1); 
    preview2.addView(mPreview2); 
    preview3=(FrameLayout)findViewById(R.id.camSetA_qr1); 
    preview3.addView(mPreview3); 

और मेरे getinstance कोड

public static Camera getCameraInstance() { 
    Camera c = null; 
    try { 
     c = Camera.open(); 
    } catch (Exception e) { 
    } 
    return c; 
} 
+2

शायद आप तीन पारदर्शी वर्गों के साथ कैमरा स्क्रीन के ऊपर छवि रख सकते हैं? –

+0

याह, मैंने इसके बारे में भी सोचा है, लेकिन क्या इसके अलावा कोई अन्य विकल्प है? –

+1

मैं इस विकल्प का सुझाव दूंगा क्योंकि यह कीमती स्मृति को बचाएगा। हो सकता है कि बफर में कैमरा आउटपुट स्टोर करना भी संभव हो, और फिर प्रत्येक फ्रेम आपकी प्रत्येक स्क्वायर छवियों में प्रदर्शित हो? फिर भी मैं अन्य संभावनाओं को नहीं जानता क्योंकि मैं एक आईफोन लड़का हूं। –

उत्तर

3

आप केवल वही कैमरा (आगे या पीछे) एक बार खोल सकते हैं; आप कई पूर्वावलोकन धाराओं का उत्पादन करने के लिए कैमरा कई बार नहीं खोल सकते हैं। असल में, अधिकांश उपकरणों पर, आप कैमरे की प्रोसेसिंग पाइपलाइन को दो कैमरों के बीच साझा करने के बाद से फ्रंट और बैक कैमरे को एक साथ नहीं खोल सकते हैं।

ऐसा करने के लिए, आपको केवल एक बार कैमरा खोलने की आवश्यकता है, और उसके बाद आउटपुट पूर्वावलोकन डेटा को तीन भागों में विभाजित करें जिन्हें आप प्रदर्शित करते हैं।

यदि आपको 3.0 (हनीकॉम) से पहले एंड्रॉइड संस्करणों पर चलाने की आवश्यकता है, तो आपको preview callbacks का उपयोग करने की आवश्यकता है। उनके साथ, आपको प्रत्येक फ्रेम के लिए वाईयूवी डेटा की एक बाइट [] सरणी मिल जाएगी जिसे आप फसल कर सकते हैं, आरजीबी में परिवर्तित कर सकते हैं, और एक छवि दृश्य या SurfaceView में जगह ले सकते हैं।

एंड्रॉयड 3.0 पर या बाद में, आप setPreviewTexture विधि पाइप के लिए पूर्वावलोकन डेटा एक ओपन बनावट, जिसे फिर आप GLSurfaceView या समकक्ष में एक से अधिक quads के लिए प्रदान कर सकते हैं में उपयोग कर सकते हैं।