2017-02-09 8 views
6

मैं अपने कस्टम कैमरे को फोकस करने के बाद फोकस लॉक करने की कोशिश कर रहा हूं। पहले यह वायुसेना मोड स्वत: पर सेट:कैमरा 2 एपीआई, एंड्रॉइड में फोकस कैसे लॉक करें?

builder.set(CaptureRequest.CONTROL_AF_MODE, 
        CaptureRequest.CONTROL_AF_MODE_AUTO); 

और पूर्वावलोकन यह दूरी ध्यान केंद्रित पाता छूने के बाद, और मैं वायुसेना और एई इस कोड का उपयोग लॉक करने के लिए है:

builder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE); 
builder.set(CaptureRequest.CONTROL_AE_LOCK, true); 

लॉकिंग एई में ठीक काम करता है कोई डिवाइस लॉकिंग एएफ नेक्सस 5 और नेक्सस 5x पर काम कर रहा है। लेकिन सैमसंग एस 5 और एस 6 के लिए, यह फोकस खोजने की कोशिश करता रहता है।

फोकस लॉक करने का सबसे अच्छा तरीका क्या है?

उत्तर

9

पर काम करता है आदेश वायुसेना आप AF_TRIGGER का अनुरोध की देखभाल करने के लिए है लॉक करने के लिए में (यदि नहीं यह एक वायुसेना अनुरोध पाश और अवशेष में प्रवेश करती है हमेशा ध्यान केंद्रित करने की कोशिश कर रहा है, लेकिन कुछ गठजोड़ अपने परिवार कल्याण में इसे ठीक, इतनी अच्छी तरह से Nexus 5 फोकस के रूप में कुछ उपकरणों भी यह नहीं)

तो, सही क्रम हो जाएगा चाहिए:

  • सेट CONTROL_AF_MODECONTROL_AF_MODE_AUTO को (के जरिए session.setRepeatingRequest()) और AF_REGIONS और AE_REGIONS अगर आप

  • प्रतीक्षा चाहते हैं जब तक आप जाँच लें कि CONTROL_AF_MODECaptureCallback से totalCaptureRequest चेक करके स्वतः में पहले से ही है।

  • सेट CONTROL_AF_MODE_AUTO के साथ बिल्डर में AF_TRIGGER_START लेकिन इसके बजाय session.setRepeatingRequest() उपयोग session.capture() का उपयोग कर के इस समय।

  • inmediately उसके बाद, फिर से session.setRepeatingRequest() along with the CONTROL_AF_MODE_AUTO` AF_TRIGGER_IDLE (रद्द नहीं!) एक प्रयोग सेट करने के लिए AF_TRIGGER निर्धारित किया है।

  • ध्यान केंद्रित होने तक प्रतीक्षा करें, आपको FOCUSED_LOCKED या NOT_FOCUSED_LOCKED प्राप्त होगा।

PASSIVE_FOCUSED राज्य केवल जब CONTROL_AF_MODE ऑटो में नहीं निरंतर चित्र में है!

ट्रिगर करने से पहले ऑटो फोकस मोड में वास्तव में होने का ख्याल रखना।

आप लेकिन हमेशा उसके बाद (रद्द नहीं) IDLE को चलाता डाल करने के लिए एक session.repeatingRequest()

+0

बहुत बढ़िया स्पष्टीकरण! धन्यवाद। – imudin07

+0

यदि आप इस प्रश्न पर नजर डालें तो यह वास्तव में बहुत अच्छा होगा http://stackoverflow.com/questions/42090124/searching-focus-keeps-failing-with-external-lens-camera2-api-in-android – imudin07

+0

एमएमएम, खेद है कि मैंने किसी भी बाहरी लेंस के साथ काम नहीं किया है, मैं आपकी मदद नहीं कर सकता :( – Yamidragut

2

आप CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE पर फ़ोकस को स्थान नहीं दे सकते।

आपको अपने एएफ ट्रिगर के दौरान स्थिति के लिए CONTROL_AF_MODE_AUTO एडीएन इंतजार करना चाहिए। आप देख सकते हैं कि एंड्रॉयड फोकस मशीन capture() बजाय repeatingRequest() का उपयोग करके केवल एक बार enter link description here

+0

में याद हाँ मैं भी यही कर रहा हूँ (CONTROL_AE_PRECAPTURE_TRIGGER भी) के साथ सभी ट्रिगर के साथ हमेशा session.capture() उपयोग करना चाहिए। सबसे पहले यह 'CONTROL_AF_MODE_AUTO' है, और तब तक प्रतीक्षा करें जब तक एएफ राज्य 'FOCUSED_LOCKED' या 'PASSIVE_FOCUSED' न हो।और फिर मैं 'CONTROL_AF_TRIGGER_CANCEL', वायुसेना सैमसंग S5/S6 – imudin07

+0

के नेक्सस के लिए' 'CONTROL_AF_MODE_CONTINUOUS_PICTURE करने मोड,' CONTROL_AF_MODE_OFF' को वायुसेना ट्रिगर सेट लेकिन मैं इसे डिवाइस के लिए अलग-अलग डिवाइस काम कर रहा है क्योंकि, सुनिश्चित करें कि जो उचित तरीका है नहीं कर रहा हूँ। – imudin07

+0

अगर मैं 'CONTROL_AF_MODE_OFF 'पर सेट करता हूं, तो यह सैमसंग के लिए अच्छा काम कर रहा है। लेकिन Nexus5 में/5 गुना से यह के रूप में अपनी फर्मवेयर कैमरा एपीआई के साथ मिलकर काम करने के लिए, यदि आप कैसे अपने काम आप अपने कस्टम कैमरा कार्यान्वयन की जाँच करनी चाहिए देखना चाहता हूँ धुँधली – imudin07

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