Как проверить камеру в симуляторе iPhone?


123

Есть ли способ протестировать камеру iPhone в симуляторе без развертывания на устройстве? Это кажется ужасно утомительным.

Ответы:


138

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

Список действий, требующих реального устройства:

  • настоящий телефон
  • камера
  • акселерометр
  • реальные данные GPS
  • компас
  • вибрация
  • всплывающее уведомление...

54
Это своего рода отстой, что, если вам нужно протестировать более раннюю версию ОС, установленную в вашей цели развертывания, думаю, вы тогда облажались.
марчинрам

2
Вот инструкции, как понизить версию
knagode

5
Разве push-уведомления не доступны только для устройств?
mgarciaisaia

13
У меня нет устройства iOS. Если я хочу протестировать на реальном устройстве, мне нужно попросить кого-нибудь ... Это отстой ...
Лука

10
WTF, не каждый имеет устройство IOS только потому , что они разрабатывают для прошивки
Pete

7

Мне нужно было протестировать несколько пользовательских оверлеев для фотографий. Наложения необходимо отрегулировать в зависимости от размера / разрешения изображения.

Я подошел к этому так же, как и предложение Стефана, я решил закодировать «фиктивный» отклик камеры.

Когда симулятор запущен, я выполняю этот фиктивный код вместо стандартного «captureStillImageAsynchronouslyFromConnection».

В этом фиктивном коде я создаю «черную фотографию» необходимого разрешения и затем отправляю ее через конвейер, чтобы она обрабатывалась как обычная фотография. По сути, дает ощущение очень быстрой камеры.

CGSize sz = UIDeviceOrientationIsPortrait([[UIDevice currentDevice] orientation]) ? CGSizeMake(2448, 3264) : CGSizeMake(3264, 2448);
UIGraphicsBeginImageContextWithOptions(sz, YES, 1);
[[UIColor blackColor] setFill];
UIRectFill(CGRectMake(0, 0, sz.width, sz.height));
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

NSData *imageData = UIImageJPEGRepresentation(image, 1.0);

Изображение выше эквивалентно 8-мегапиксельным фотографиям, которые отправляет большинство современных устройств. Очевидно, чтобы протестировать другие разрешения, вы бы изменили размер.


Умный @Craig - я сделал нечто подобное (не очень умное, я полагаю) в недавнем проекте, но использовал изображение, хранящееся в ресурсах. Таким образом можно автоматизировать скриншоты с помощью fastlane для отправки на iTunesConnect
Moose

1

Нет (если они не добавили способ сделать это в 3.2, еще не проверяли).


0

Распространенной причиной необходимости доступа к камере является создание снимков экрана для AppStore.

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

Конечно, вам нужно иметь устройство с большим экраном.

IPad идеально подходит для тестирования макетов и создания снимков для всех устройств. Скриншоты для iPhone6 ​​+ придется немного растянуть (в масштабе 1,078125 - не беда…)

Хорошая ссылка на краткую ссылку на разрешения устройств iOS: http://www.iosres.com/


Изменить: в недавнем проекте, где используется настраиваемый контроллер вида камеры, я заменил AVPreview на UIImageView в цели, которую я использую только для запуска в симуляторе. Таким образом, я могу автоматизировать скриншоты для загрузки iTunesConnect. Обратите внимание, что кнопки управления камерой находятся не в наложении, а на виде поверх предварительного просмотра камеры.

Ответ @Craig ниже описывает еще один метод, который я нашел довольно умным - он также работает с наложением камеры, в отличие от моего.


3
Вот в чем суть вопроса ... В симуляторе нет камеры.
Moose

1
Зачем вам нужна камера, чтобы делать скриншоты?
Рафаэль

3
Зачем вам делать скриншоты с камеры? Чтобы загрузить снимки экрана приложения камеры в действии в Магазин, с экранами разных размеров.
Moose

0

Только что нашел репозиторий на git, который помогает имитировать функции камеры в iOS Simulator с изображениями, видео или камерой MacBook.

Repo



-1

Я написал замещающее представление для использования в режиме отладки. Он реализует тот же API и выполняет те же обратные вызовы делегатов. В моем случае я заставил его возвращать случайное изображение из моего тестового набора. Писать довольно тривиально.


3
И вы можете заставить его вернуть изображение с камеры iSight :)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.