Как мне получить автофокус работать во втором сеансе AVCaptureSession без воссоздания сеансов?

Автофокус не работает в первом сеансе AVCaptureSession, когда я создаю второй сеанс AVCaptureSession. Второй создаваемый сеанс - это тот, в котором работает автофокус, а первый созданный сеанс не выполняет автофокусировку.

Я ожидал, что любой сеанс сможет автоматически фокусироваться при запуске после остановки другого, так же как автоматический баланс белого и автоматическая экспозиция работают для обоих сеансов. Если вы посмотрите на окно журнала с примером кода ниже, вы увидите сообщения о наблюдении за ключом; но никогда сообщение об изменении фокуса, когда запущен верхний сеанс.

Дополнительное примечание: К сожалению, у меня есть ошибка в сторонней библиотеке, которую я использую, которая не позволяет мне просто полностью воссоздать сеансы при переключении между ними (утечка его AVCaptureSessions, которые в конечном итоге приводят к уничтожению приложения). Полная история состоит в том, что эта библиотека создает для меня один из сеансов захвата, у нее есть общедоступный API для запуска и остановки сеанса, и я хочу создать еще один сеанс. Приведенный ниже код демонстрирует проблему без использования сторонней библиотеки.

Я создал тестовое приложение с кодом, перечисленным ниже, и файлом XIB, который имеет два представления, одно над другим, и кнопку, подключенную к методу switchSessions, который демонстрирует проблему.

Это может быть связано с проблема, описанная здесь, Я немного поиграл в конфиг. Так что, возможно, я неосознанно изменил какую-то конфигурацию. вот конфиг окружения / development.rb config.cache_classes = false ...

Раньше он работал нормально. Я немного поиграл в конфиг. Так что, возможно, я неосознанно изменил какую-то конфигурацию.

вот конфигурация environment / development.rb

  config.cache_classes = false

  # Log error messages when you accidentally call methods on nil.
  config.whiny_nils = true

  # Show full error reports and disable caching
  config.consider_all_requests_local       = true
  config.action_view.debug_rjs             = true
  config.action_controller.perform_caching = false

  # Don't care if the mailer can't send
  config.action_mailer.raise_delivery_errors = false

  # Print deprecation notices to the Rails logger
  config.active_support.deprecation = :log

  # Only use best-standards-support built into browsers
  config.action_dispatch.best_standards_support = :builtin

  # migration prefix with sequence #s
  config.active_record.timestamped_migrations = false

  #time zone
  config.time_zone = 'UTC'

Вот конфигурационная секция application.rb

 # Configure the default encoding used in templates for Ruby 1.9.
 config.encoding = "utf-8"

 # Configure sensitive parameters which will be filtered from the log file.
 config.filter_parameters += [:password]

 config.active_record.schema_format = :sql

, когда я запускаю reload! на консоли rails он возвращает true

93
задан Maddy.Shik 25 March 2011 в 03:36
поделиться