Jak przetestować kamerę w symulatorze iPhone'a?


123

Czy istnieje sposób na przetestowanie aparatu iPhone'a w symulatorze bez konieczności wdrażania go na urządzeniu? To wydaje się strasznie nudne.

Odpowiedzi:


138

Istnieje wiele funkcji specyficznych dla urządzenia, które musisz przetestować na urządzeniu, ale nie jest to trudniejsze niż użycie symulatora. Wystarczy utworzyć cel debugowania dla urządzenia i pozostawić go podłączonego do komputera.

Lista czynności, które wymagają rzeczywistego urządzenia:

  • rzeczywisty telefon
  • Aparat
  • akcelerometr
  • prawdziwe dane GPS
  • kompas
  • wibracja
  • powiadomienia push...

54
To trochę do bani, a co jeśli musisz przetestować na wcześniejszej wersji systemu operacyjnego ustawionej w celu wdrożenia, zgadnij, że będziesz miał przerąbane.
marchinram

2
Oto instrukcje, jak obniżyć wersję urządzenia: iclarified.com/31004/how-to-downgrade-from-ios-7-beta-to-ios-6
knagode

5
Czy powiadomienia push nie były też funkcją dostępną tylko na urządzeniu?
mgarciaisaia

13
Nie posiadam urządzenia z systemem iOS. Jeśli chcę przetestować na prawdziwym urządzeniu, muszę kogoś zapytać .. To jest do bani ..
Luca

10
wtf, nie każdy ma urządzenie z systemem iOS tylko dlatego, że tworzy oprogramowanie na iOS
pete,

7

Musiałem przetestować niestandardowe nakładki do zdjęć. Nakładki musiały być dostosowane na podstawie rozmiaru / rozdzielczości obrazu.

Podszedłem do tego w sposób podobny do sugestii Stefana, postanowiłem zakodować „atrapę” odpowiedzi kamery.

Gdy symulator jest uruchomiony, wykonuję ten fałszywy kod zamiast standardowego „captureStillImageAsynchronouslyFromConnection”.

W tym fikcyjnym kodzie buduję „czarne zdjęcie” o wymaganej rozdzielczości, a następnie przesyłam je przez potok, aby traktować je jak zwykłe zdjęcie. Zasadniczo zapewnia wrażenie bardzo szybkiego aparatu.

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);

Powyższy obraz jest odpowiednikiem zdjęć 8 MP, które wysyła większość współczesnych urządzeń. Oczywiście, aby przetestować inne rozdzielczości, zmieniłbyś rozmiar.


Smart @Craig - zrobiłem coś podobnego (chyba niezbyt inteligentnego) w ostatnim projekcie, ale wykorzystałem obraz przechowywany w zasobach. W ten sposób można zautomatyzować zrzuty ekranu za pomocą Fastlane do wysyłania na iTunesConnect
Moose

1

Nie (chyba że dodali sposób, aby to zrobić w 3.2, jeszcze nie sprawdzili).


0

Częstym powodem konieczności uzyskania dostępu do kamery jest robienie zrzutów ekranu do AppStore.

Ponieważ kamera nie jest dostępna w symulatorze, dobrą sztuczką (jedyną jaką znam) jest zmiana rozmiaru widoku do potrzebnego rozmiaru, tylko czas na zrobienie zrzutów ekranu. Przytniesz je później.

Jasne, musisz mieć urządzenie z dostępnym większym ekranem.

IPad jest idealny do testowania układów i robienia migawek dla wszystkich urządzeń. Zrzuty ekranu dla iPhone6 ​​+ będą musiały zostać trochę rozciągnięte (przeskalowane do 1078125 - nic wielkiego…)

Dobre łącze do szybkiej wersji rozdzielczości urządzeń iOS: http://www.iosres.com/


Edycja: W ostatnim projekcie, w którym używany jest niestandardowy kontroler widoku z kamery, zastąpiłem AVPreview przez UIImageView w celu, którego używam tylko do uruchamiania w symulatorze. W ten sposób mogę zautomatyzować zrzuty ekranu do przesyłania przez iTunesConnect. Zwróć uwagę, że przyciski sterowania kamerą nie znajdują się w nakładce, ale w widoku nad podglądem kamery.

Odpowiedź @Craig poniżej opisuje inną metodę, którą uznałem za całkiem sprytną - działa ona również z nakładką aparatu, w przeciwieństwie do mojej.


3
I o to chodzi ... W symulatorze nie ma kamery.
Łoś

1
Dlaczego potrzebujesz aparatu do robienia zrzutów ekranu?
Raphael

3
Dlaczego miałbyś robić zrzuty ekranu z aparatu? Aby przesłać zrzuty ekranu aplikacji aparatu w akcji w Sklepie, na różnych rozmiarach ekranu.
Łoś

0

Właśnie znalazłem repozytorium na git, które pomaga symulować funkcje aparatu w symulatorze iOS z obrazami, filmami lub kamerą MacBooka.

Repozytorium



-1

Napisałem widok zastępczy do użycia w trybie debugowania. Implementuje ten sam interfejs API i wykonuje te same wywołania zwrotne delegata. W moim przypadku sprawiłem, że zwrócił losowy obraz z mojego zestawu testowego. Pisanie dość trywialne.


3
I możesz sprawić, że zwróci obraz z kamery iSight :)
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.