Comment tester une caméra dans le simulateur iPhone?


123

Existe-t-il un moyen de tester la caméra iPhone dans le simulateur sans avoir à déployer sur un appareil? Cela semble terriblement fastidieux.

Réponses:


138

Il existe un certain nombre de fonctionnalités spécifiques à l'appareil que vous devez tester sur l'appareil, mais ce n'est pas plus difficile que d'utiliser le simulateur. Créez simplement une cible de débogage pour l'appareil et laissez-la attachée à l'ordinateur.

Liste des actions qui nécessitent un appareil réel:

  • le téléphone réel
  • l'appareil photo
  • l'accéléromètre
  • données GPS réelles
  • la boussole
  • vibration
  • notifications push...

54
C'est un peu nul, que se passe-t-il si vous devez tester sur une version antérieure du système d'exploitation défini dans votre cible de déploiement, supposez que vous seriez foutu alors.
marchinram

2
Voici les instructions pour rétrograder votre appareil: iclarified.com/31004/how-to-downgrade-from-ios-7-beta-to-ios-6
knagode

5
Les notifications push n'étaient-elles pas également une fonctionnalité réservée aux appareils?
mgarciaisaia

13
Je ne possède pas d'appareil iOS. Si je veux tester sur un vrai appareil, je dois demander à quelqu'un .. Ça craint ..
Luca

10
wtf, tout le monde n'a pas d'appareil iOS simplement parce qu'ils développent pour iOS
pete

7

J'avais besoin de tester des superpositions personnalisées pour les photos. Les superpositions devaient être ajustées en fonction de la taille / résolution de l'image.

J'ai abordé cela d'une manière qui était similaire à la suggestion de Stefan, j'ai décidé de coder une réponse de caméra "factice".

Lorsque le simulateur est en cours d'exécution, j'exécute ce code factice au lieu du standard "captureStillImageAsynchronouslyFromConnection".

Dans ce code factice, je crée une "photo noire" de la résolution nécessaire, puis je l'envoie à travers le pipeline pour être traitée comme une photo normale. Fournit essentiellement la sensation d'un appareil photo très rapide.

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

L'image ci-dessus équivaut à des photos 8MP que la plupart des appareils actuels envoient. Évidemment, pour tester d'autres résolutions, vous changeriez la taille.


Smart @Craig - J'ai fait quelque chose de similaire (pas si intelligent que je suppose) dans un projet récent, mais j'ai utilisé une image stockée dans les ressources. De cette façon, il est possible d'automatiser les captures d'écran avec Fastlane à envoyer sur iTunesConnect
Moose

1

Non (sauf s'ils ont ajouté un moyen de le faire dans 3.2, n'ont pas encore vérifié).


0

Une raison courante de la nécessité d'accéder à la caméra est de faire des captures d'écran pour l'AppStore.

La caméra n'étant pas disponible dans le simulateur, une bonne astuce (la seule que je connaisse) est de redimensionner votre vue à la taille dont vous avez besoin, juste le temps de prendre les captures d'écran. Vous les recadrez plus tard.

Bien sûr, vous devez disposer de l'appareil avec le plus grand écran disponible.

L'iPad est parfait pour tester les mises en page et créer des instantanés pour tous les appareils. Les captures d'écran pour iPhone6 ​​+ devront être un peu étirées (mise à l'échelle de 1 078 125 - Ce n'est pas grave…)

Bon lien vers une référence rapide des résolutions d'appareils iOS: http://www.iosres.com/


Edit: Dans un projet récent, où un contrôleur de vue de caméra personnalisé est utilisé, j'ai remplacé l'AVPreview par un UIImageView dans une cible que je n'utilise que pour exécuter dans le simulateur. De cette façon, je peux automatiser les captures d'écran pour le téléchargement iTunesConnect. Notez que les boutons de contrôle de la caméra ne sont pas dans une superposition, mais dans une vue sur l'aperçu de la caméra.

La réponse @Craig ci-dessous décrit une autre méthode que j'ai trouvée assez intelligente - elle fonctionne également avec la superposition de caméra, contrairement à la mienne.


3
C'est le point de la question ... Il n'y a pas de caméra dans le simulateur.
Moose

1
Pourquoi auriez-vous besoin d'un appareil photo pour prendre des captures d'écran?
Raphael

3
Pourquoi auriez-vous besoin de prendre des captures d'écran de la caméra que vous voulez dire? Pour télécharger des captures d'écran de votre application caméra en action sur le Store, à différentes tailles d'écran.
Moose

0

Je viens de trouver un repo sur git qui aide à simuler les fonctions de l'appareil photo sur iOS Simulator avec des images, des vidéos ou votre appareil photo MacBook.

Repo



-1

J'ai écrit une vue de remplacement à utiliser en mode débogage. Il implémente la même API et effectue les mêmes rappels de délégué. Dans mon cas, je lui ai fait renvoyer une image aléatoire de mon ensemble de test. Assez trivial à écrire.


3
Et, vous pouvez le faire pour renvoyer une image de la caméra iSight :)
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.