2013-01-29 23 views
9

पर फ़ोकस करने पर समाप्त होता है, मैं वर्तमान में अपने कैमरे को चलाने के लिए AVFoundation का उपयोग कर रहा हूं, लेकिन जब मैं कैमरे पर ध्यान केंद्रित करता हूं तो मैं यह पता लगाने में सक्षम होना चाहता हूं। क्या इसे करने का कोई तरीका है?पता लगाएं कि AVFoundation कैमरा

बहुत बहुत धन्यवाद !!

उत्तर

8

doc

के अनुसार आप निर्धारित करने के लिए एक उपकरण है वर्तमान में ध्यान दे रहा है adjustingFocus संपत्ति का उपयोग कर सकते हैं। जब कोई डिवाइस प्रारंभ होता है और फोकस करना बंद कर देता है तो आप key-value observing का उपयोग करके संपत्ति का निरीक्षण कर सकते हैं।

आप फोकस मोड सेटिंग बदलने के हैं, तो आप इस प्रकार डिफ़ॉल्ट कॉन्फ़िगरेशन के लिए उन्हें वापस कर सकते हैं:

5

initialisation में:

[[[captureManager videoInput] device] addObserver:self forKeyPath:@"adjustingFocus" options:NSKeyValueObservingOptionNew context:nil]; 

और उसके बाद:

bool focusing = false; 
bool finishedFocus = false; 
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context 
{ 
    //[super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; 
    if([keyPath isEqualToString:@"adjustingFocus"]){ 
     BOOL adjustingFocus = [ [change objectForKey:NSKeyValueChangeNewKey] isEqualToNumber:[NSNumber numberWithInt:1] ]; 

     if (adjustingFocus) { 
      focusing=true; 
     } 
     else { 
      if (focusing) { 
       focusing = false; 
       finishedFocus = true; 
      } 
     } 
    } 
} 
+0

धन्यवाद @ alexi-akl! यह वह कोड था जिसे मैं याद कर रहा था ... :) – cdescours

+0

खुश मेरा जवाब सहायक था :) @cdescours –

0

मुझे लगता है कि यह मेरे जैसे शूबैंक उत्तर पर विस्तार करने के लिए योग्यता है जो सेब (उत्कृष्ट) को पढ़ना पसंद नहीं करते हैं दस्तावेज जो कुछ आयामों को छोड़ने के लिए सुझाव देते हैं, जो AVCaptureDevice एक्सपोजर समायोजित कर रहे थे और संभवतः, व्हाइटपॉइंट