iPhone: камера Autofocus Observer? -- iphone поле с участием camera поле с участием notifications поле с участием observer-pattern поле с участием autofocus пол Связанный проблема

iPhone : camera autofocus observer?


17
vote

проблема

русский

Я хотел бы знать, можно ли получать уведомление о Autofocus внутри приложения для iPhone?

I.e, существует ли у него способ быть уведомленным, когда автофокус запускается, заканчивается, если он преуспеет или не удалось ...?

Если так, какое имя уведомления?

Английский оригинал

I would like to know if it's possible to receive notification about autofocus inside an iPhone application?

I.E, does it exist a way to be notified when autofocus starts, ends, if it has succeed or failed... ?

If so, what is this notification name ?

</div
              

Список ответов

44
 
vote
vote
Лучший ответ
 
<Р> я найти решение для моего случая, чтобы найти, когда автофокусировка начинается / заканчивается. Это дело просто с КВО (Key-Value наблюдений). <Р> В моем UIViewController:
 <код> // callback - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {     if( [keyPath isEqualToString:@"adjustingFocus"] ){         BOOL adjustingFocus = [ [change objectForKey:NSKeyValueChangeNewKey] isEqualToNumber:[NSNumber numberWithInt:1] ];         NSLog(@"Is adjusting focus? %@", adjustingFocus ? @"YES" : @"NO" );         NSLog(@"Change dictionary: %@", change);     } }  // register observer - (void)viewWillAppear:(BOOL)animated{     AVCaptureDevice *camDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];     int flags = NSKeyValueObservingOptionNew;      [camDevice addObserver:self forKeyPath:@"adjustingFocus" options:flags context:nil];      (...)    }  // unregister observer - (void)viewWillDisappear:(BOOL)animated{     AVCaptureDevice *camDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];     [camDevice removeObserver:self forKeyPath:@"adjustingFocus"];      (...) }   

Документация:

    .
  • Key-Value наблюдений руководство по программированию
  • NSKeyValueObserving
 

I find the solution for my case to find when autofocus starts / ends. It's simply dealing with KVO (Key-Value Observing).

In my UIViewController:

// callback - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context {     if( [keyPath isEqualToString:@"adjustingFocus"] ){         BOOL adjustingFocus = [ [change objectForKey:NSKeyValueChangeNewKey] isEqualToNumber:[NSNumber numberWithInt:1] ];         NSLog(@"Is adjusting focus? %@", adjustingFocus ? @"YES" : @"NO" );         NSLog(@"Change dictionary: %@", change);     } }  // register observer - (void)viewWillAppear:(BOOL)animated{     AVCaptureDevice *camDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];     int flags = NSKeyValueObservingOptionNew;      [camDevice addObserver:self forKeyPath:@"adjustingFocus" options:flags context:nil];      (...)    }  // unregister observer - (void)viewWillDisappear:(BOOL)animated{     AVCaptureDevice *camDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo];     [camDevice removeObserver:self forKeyPath:@"adjustingFocus"];      (...) } 

Documentation:

  • Key-Value Observing programming guide
  • NSKeyValueObserving protocol
</div
 
 
       
       
5
 
vote

<Сильные> Swift 3

Установите режим фокусировки на вашем <код> AVCaptureDevice пример:

 <код> do {      try videoCaptureDevice.lockForConfiguration()      videoCaptureDevice.focusMode = .continuousAutoFocus      videoCaptureDevice.unlockForConfiguration() } catch {}   
<Р> Добавить наблюдатель:
 <код> videoCaptureDevice.addObserver(self, forKeyPath: "adjustingFocus", options: [.new], context: nil)   
<Р> Override <код> observeValue :
 <код> override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {      guard let key = keyPath, let changes = change else {          return     }      if key == "adjustingFocus" {          let newValue = changes[.newKey]         print("adjustingFocus (newValue)")     } }   
 

Swift 3

Set focus mode on your AVCaptureDevice instance:

do {      try videoCaptureDevice.lockForConfiguration()      videoCaptureDevice.focusMode = .continuousAutoFocus      videoCaptureDevice.unlockForConfiguration() } catch {} 

Add observer:

videoCaptureDevice.addObserver(self, forKeyPath: "adjustingFocus", options: [.new], context: nil) 

Override observeValue:

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {      guard let key = keyPath, let changes = change else {          return     }      if key == "adjustingFocus" {          let newValue = changes[.newKey]         print("adjustingFocus (newValue)")     } } 
</div
 
 
3
 
vote
<Р> Вы можете использовать современное значение ключа Swift наблюдения API, чтобы получить обратные вызовы при фокусировке начинается и заканчивается, наблюдая <код> AVCaptureDeviceInput.device.isAdjustingFocus свойство. В приведенном ниже примере, экземпляр <код> AVCaptureDeviceInput называется <код> captureDeviceInput .

Пример:

 <код> self.focusObservation = observe(.captureDeviceInput.device.isAdjustingFocus, options: .new) { _, change in     guard let isAdjustingFocus = change.newValue else { return }      print("isAdjustingFocus = (isAdjustingFocus)")  }   
 

You can use modern Swift key value observing api to get callbacks when focusing starts and ends by observing AVCaptureDeviceInput.device.isAdjustingFocus property. In the example below, instance of AVCaptureDeviceInput is called captureDeviceInput.

Example:

self.focusObservation = observe(.captureDeviceInput.device.isAdjustingFocus, options: .new) { _, change in     guard let isAdjustingFocus = change.newValue else { return }      print("isAdjustingFocus = (isAdjustingFocus)")  } 
</div
 
 

Связанный проблема

0  вебсервис В Iphone SDK?  ( Webservice in iphone sdk ) 
<Р> я скачал WSDLObjC-0,6 от Google, чтобы включить SOAP веб-сервис в IPhone SDK.But это является, как App файл, как я могу интегрировать этот файл в iPhone SD...

3  Facebook IOS SDK: войдите в Facebook без всегда просить разрешений для приложения  ( Facebook ios sdk login to facebook without always ask for permissions for the a ) 
Я использую Facebook iOS SDK в моем приложении, и у меня есть два подобных вопроса: Есть ли способ узнать, есть ли в настоящее время войти пользователя? ...

1  Не удается изменить размер кадра UiscrollView  ( Cannot resize uiscrollviews frame ) 
У меня есть UiscrollView с его рамой и содержимым с таким же размером. Я хочу изменить высоту кадра ScrollView, когда появится клавиатура, но она не работает....

1  Нужно, чтобы получить доступ к URL в моем одном представлении ИОС приложения с помощью веб-просмотра  ( Need to access the url in my single view ios application using web view ) 
<Р> У меня есть один вопрос относительно WebView. У меня есть URL-адрес, и нужно, чтобы запустить этот URL в WebView. и мой код здесь идет .. <код> NSLog(@"R...

0  Призматическое соединение вызывает сбой коробки2D (Cocos2D)  ( Prismatic joint causes a crash box2dcocos2d ) 
Я пытался настроить призматический сустав, но я получаю эту ошибку при выполнении времени: Ошибка утверждения: (заблокировано () == false), функциональная нас...

8  Как обрезать изображение в частях программно  ( How to crop image in to pieces programmatically ) 
Мне нужно разделить изображение на 9 штук программно. Любые предложения о том, как это сделать? ...

1  Как изменить XIB в приложении вкладывателя?  ( How to change xib in a tab bar application ) 
Мое приложение для iPhone основано на панели вкладка, но я хотел бы выстрелить действие, которое полностью выключает View Controller Tab Bar полностью и замен...

4  Основные данные Nsfetchrequest также выбирают детей объектов объекта  ( Core data nsfetchrequest also fetches children objects of the entity ) 
Я новичок в iOS Dev и основные данные. У меня есть родительский NsmanageObject <код> @class Units; @interface Properties : NSManagedObject @property (nonat...

1  Обновите и вставьте объемные данные XML в мою базу данных SQLite  ( Update and insert bulk xml data into my sqlite database ) 
Я хочу загрузить хостованный XML документ в базу данных My приложения SQLite, обновляя существующие строки или вставляя новые строки данных по мере необходимо...

0  Получение неправильной аннотации от метода делегата MapView  ( Getting wrong annotation from mapview delegate method ) 
Я объявил следующее в своем файле .h: <Код> Annotation *annoForMoreDetails . Однако, когда я пытаюсь установить его в текущую аннотацию в методе <Код> -...

47  Получение ошибки от push-уведомления  ( Getting an error from push notification ) 
В моем приложении мне нужны push-уведомления. Я реализую все инструкции от Docs push-уведомления. Но я получил ошибку от push-уведомления: <код> Fail To Reg...

0  Не можете получить панель поиска для отображения в приложении iPhone  ( Cant get search bar to display in iphone application ) 
Я пытаюсь получить панель поиска для отображения в моем приложении. Я следую в примере Show в приложении TableSearch Sample. Я более или менее реализован ...

15  Как получить все записи NSFetchedResultScontroller / NsmanageObjectContext?  ( How to get all entries of a nsfetchedresultscontroller nsmanagedobjectcontext ) 
У меня есть хорошее рабочее приложение для iPhone, которое работает с основными данными. Я использую NSFetchedResultScontroller / NSManageObjectContext, как о...

2  IPhone UiableView подавляет кнопку раскрытия, когда кнопка «Удаление» отображается  ( Iphone uitableview suppress disclosure button when delete button is displayed ) 
У меня есть <код> UITableView , который имеет кнопку раскрытия на каждой строке. Когда таблица введена в режим редактирования, и управление удалением нажата (...

0  Могу ли я использовать зону памяти, чтобы убить утечки iPhone?  ( Can i use a memory zone to kill iphone leaks ) 
У меня есть класс C ++, который я использую с моим контроллером Objective-C ++ в моем приложении iPhone. Класс C ++ делает некоторые расчеты на некоторых данн...

Связанный проблема

0  вебсервис В Iphone SDK? 
3  Facebook IOS SDK: войдите в Facebook без всегда просить разрешений для приложения 
1  Не удается изменить размер кадра UiscrollView 
1  Нужно, чтобы получить доступ к URL в моем одном представлении ИОС приложения с помощью веб-просмотра 
0  Призматическое соединение вызывает сбой коробки2D (Cocos2D) 
8  Как обрезать изображение в частях программно 
1  Как изменить XIB в приложении вкладывателя? 
4  Основные данные Nsfetchrequest также выбирают детей объектов объекта 
1  Обновите и вставьте объемные данные XML в мою базу данных SQLite 
0  Получение неправильной аннотации от метода делегата MapView 
47  Получение ошибки от push-уведомления 
0  Не можете получить панель поиска для отображения в приложении iPhone 
15  Как получить все записи NSFetchedResultScontroller / NsmanageObjectContext? 
2  IPhone UiableView подавляет кнопку раскрытия, когда кнопка «Удаление» отображается 
0  Могу ли я использовать зону памяти, чтобы убить утечки iPhone? 



© 2021 www.qaru.top All Rights Reserved. Q&A House все права защищены


Licensed under cc by-sa 3.0 with attribution required.