Wie teste ich eine Kamera im iPhone-Simulator?


122

Gibt es eine Möglichkeit, die iPhone-Kamera im Simulator zu testen, ohne sie auf einem Gerät bereitstellen zu müssen? Das scheint furchtbar langweilig.

Antworten:


137

Es gibt eine Reihe gerätespezifischer Funktionen, die Sie auf dem Gerät testen müssen, aber es ist nicht schwieriger als die Verwendung des Simulators. Erstellen Sie einfach ein Debug-Ziel für das Gerät und lassen Sie es am Computer angeschlossen.

Liste der Aktionen, für die ein tatsächliches Gerät erforderlich ist:

  • das eigentliche Telefon
  • die Kamera
  • der Beschleunigungsmesser
  • echte GPS-Daten
  • der Kompass
  • Vibration
  • Mitteilungen...

53
Das ist ein bisschen scheiße. Wenn Sie eine frühere Version des Betriebssystems testen müssen, das in Ihrem Bereitstellungsziel festgelegt ist, werden Sie wahrscheinlich geschraubt.
Marchinram

2
Hier sind Anweisungen zum Downgrade Ihres Geräts: iclarified.com/31004/how-to-downgrade-from-ios-7-beta-to-ios-6
knagode

5
Waren Push-Benachrichtigungen nicht auch eine reine Gerätefunktion?
mgarciaisaia

11
Ich besitze kein iOS-Gerät. Wenn ich auf einem realen Gerät testen möchte, muss ich jemanden fragen. Das ist scheiße.
Luca

9
wtf, nicht jeder hat ein iOS-Gerät, nur weil sie für iOS entwickeln
Peter

7

Ich musste einige benutzerdefinierte Überlagerungen für Fotos testen. Die Überlagerungen mussten basierend auf der Größe / Auflösung des Bildes angepasst werden.

Ich näherte mich dem auf eine Art und Weise, die dem Vorschlag von Stefan ähnelte. Ich beschloss, eine "Dummy" -Kameraantwort zu codieren.

Wenn der Simulator ausgeführt wird, führe ich diesen Dummy-Code anstelle des Standards "captureStillImageAsynchronouslyFromConnection" aus.

In diesem Dummy-Code baue ich ein "schwarzes Foto" mit der erforderlichen Auflösung auf und sende es dann durch die Pipeline, um es wie ein normales Foto zu behandeln. Im Wesentlichen das Gefühl einer sehr schnellen Kamera.

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

Das obige Bild entspricht 8MP-Fotos, die die meisten aktuellen Geräte senden. Um andere Auflösungen zu testen, würden Sie natürlich die Größe ändern.


Smart @Craig - Ich habe in einem kürzlich durchgeführten Projekt etwas Ähnliches gemacht (nicht so intelligent, denke ich), aber ein in Ressourcen gespeichertes Bild verwendet. Auf diese Weise ist es möglich, Screenshots mit Fastlane zu automatisieren, um sie auf iTunesConnect
Moose

1

Nein (es sei denn, sie haben in 3.2 eine Möglichkeit hinzugefügt, dies noch nicht überprüft).


1

Ein häufiger Grund für den Zugriff auf die Kamera sind Screenshots für den AppStore.

Da die Kamera im Simulator nicht verfügbar ist, besteht ein guter Trick (der einzige, den ich kenne) darin, die Größe Ihrer Ansicht auf die gewünschte Größe zu ändern, nur die Zeit, um die Screenshots aufzunehmen. Sie werden sie später beschneiden.

Sicher, Sie müssen das Gerät mit dem größeren Bildschirm zur Verfügung haben.

Das iPad eignet sich perfekt zum Testen von Layouts und zum Erstellen von Schnappschüssen für alle Geräte. Screenshots für iPhone6 ​​+ müssen etwas gedehnt werden (skaliert um 1.078125 - keine große Sache…)

Guter Link zu einer iOS-Geräteauflösung Kurzreferenz: http://www.iosres.com/


Bearbeiten: In einem kürzlich durchgeführten Projekt, in dem ein benutzerdefinierter Kameraansichts-Controller verwendet wird, habe ich die AVPreview durch eine UIImageView in einem Ziel ersetzt, das ich nur zum Ausführen im Simulator verwende. Auf diese Weise kann ich Screenshots für den iTunesConnect-Upload automatisieren. Beachten Sie, dass sich die Kamerasteuerungsschaltflächen nicht in einer Überlagerung befinden, sondern in einer Ansicht über der Kameravorschau.

Die Antwort von @Craig unten beschreibt eine andere Methode, die ich ziemlich schlau fand - sie funktioniert im Gegensatz zu meiner auch mit Kamera-Overlay.


3
Das ist der Punkt der Frage ... Es gibt keine Kamera im Simulator.
Elch

1
Warum brauchen Sie eine Kamera, um Screenshots zu machen?
Raphael

3
Warum sollten Sie Screenshots der Kamera machen müssen, die Sie meinen? So laden Sie Screenshots Ihrer Kameraanwendung in Aktion im Store in verschiedenen Bildschirmgrößen hoch.
Elch

0

Ich habe gerade ein Repo auf Git gefunden, mit dem Sie Kamerafunktionen auf iOS Simulator mit Bildern, Videos oder Ihrer MacBook-Kamera simulieren können.

Repo


-1

Ich habe eine Ersatzansicht geschrieben, die im Debug-Modus verwendet werden soll. Es implementiert dieselbe API und führt dieselben Delegatenrückrufe durch. In meinem Fall habe ich ein zufälliges Bild aus meinem Test-Set zurückgegeben. Ziemlich trivial zu schreiben.


3
Und Sie könnten es schaffen, ein Bild von der iSight-Kamera zurückzugeben :)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.