Come si prova una fotocamera nel simulatore di iPhone?


122

C'è un modo per testare la fotocamera dell'iPhone nel simulatore senza doverla distribuire su un dispositivo? Questo sembra terribilmente noioso.

Risposte:


137

Ci sono una serie di funzionalità specifiche del dispositivo che devi testare sul dispositivo, ma non è più difficile che usare il simulatore. Basta creare una destinazione di debug per il dispositivo e lasciarla collegata al computer.

Elenco di azioni che richiedono un dispositivo effettivo:

  • il telefono reale
  • la fotocamera
  • l'accelerometro
  • dati GPS reali
  • la bussola
  • vibrazione
  • notifiche push...

54
Questo fa schifo, e se avessi bisogno di testare su una versione precedente del sistema operativo impostato nel tuo obiettivo di distribuzione, immagino che allora saresti fregato.
marchinram

2
Ecco le istruzioni su come eseguire il downgrade del tuo dispositivo: iclarified.com/31004/how-to-downgrade-from-ios-7-beta-to-ios-6
knagode

5
Anche le notifiche push non erano solo una funzionalità del dispositivo?
mgarciaisaia

12
Non possiedo un dispositivo ios. Se voglio provare su un dispositivo reale devo chiedere a qualcuno .. Che schifo ..
Luca

10
wtf, non tutti hanno un dispositivo iOS solo perché stanno sviluppando per iOS
pete

7

Avevo bisogno di testare alcune sovrapposizioni personalizzate per le foto. Le sovrapposizioni dovevano essere regolate in base alle dimensioni / risoluzione dell'immagine.

Mi sono avvicinato a questo in un modo simile al suggerimento di Stefan, ho deciso di codificare una risposta "fittizia" della telecamera.

Quando il simulatore è in esecuzione, eseguo questo codice fittizio invece dello standard "captureStillImageAsynchronouslyFromConnection".

In questo codice fittizio, creo una "foto nera" della risoluzione necessaria e poi la mando attraverso la pipeline per essere trattata come una foto normale. Essenzialmente fornendo la sensazione di una fotocamera molto veloce.

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'immagine sopra è equivalente a una foto da 8 MP che la maggior parte dei dispositivi attuali invia. Ovviamente per testare altre risoluzioni dovresti cambiare le dimensioni.


Smart @Craig - Ho fatto qualcosa di simile (non così intelligente immagino) in un progetto recente, ma ho usato un'immagine memorizzata nelle risorse. In questo modo è possibile automatizzare gli screenshot con fastlane da inviare su iTunesConnect
Moose

1

No (a meno che non abbiano aggiunto un modo per farlo nella 3.2, non abbiano ancora verificato).


0

Un motivo comune per la necessità di accedere alla videocamera è creare screenshot per l'AppStore.

Dal momento che la fotocamera non è disponibile nel simulatore, un buon trucco (l'unico che conosco) è ridimensionare la vista alla dimensione che ti serve, giusto il tempo per fare gli screenshot. Li ritaglierai più tardi.

Certo, devi avere a disposizione il dispositivo con lo schermo più grande.

L'iPad è perfetto per testare i layout e creare istantanee per tutti i dispositivi. Gli screenshot per iPhone6 ​​+ dovranno essere leggermente allungati (scalati di 1.078125 - Non è un grosso problema ...)

Buon collegamento a una risoluzione rapida dei dispositivi iOS: http://www.iosres.com/


Modifica: in un progetto recente, in cui viene utilizzato un controller personalizzato per la visualizzazione della telecamera, ho sostituito AVPreview con un UIImageView in un target che utilizzo solo per l'esecuzione nel simulatore. In questo modo posso automatizzare gli screenshot per il caricamento di iTunesConnect. Si noti che i pulsanti di controllo della fotocamera non si trovano in una sovrapposizione, ma in una vista sull'anteprima della fotocamera.

La risposta di @Craig di seguito descrive un altro metodo che ho trovato abbastanza intelligente: funziona anche con la sovrapposizione della fotocamera, contrariamente al mio.


3
Questo è il punto della domanda ... Non c'è nessuna telecamera nel simulatore.
Moose

1
Perché avresti bisogno di una fotocamera per acquisire schermate?
Raphael

3
Perché dovresti prendere screenshot della fotocamera che intendi? Per caricare schermate dell'applicazione della fotocamera in azione sullo Store, con schermi di dimensioni diverse.
Moose

0

Ho appena trovato un repository su git che aiuta a simulare le funzioni della fotocamera su iOS Simulator con immagini, video o la fotocamera del tuo MacBook.

repo



-1

Ho scritto una vista sostitutiva da utilizzare in modalità debug. Implementa la stessa API e effettua gli stessi callback delegati. Nel mio caso ho fatto in modo che restituisse un'immagine casuale dal mio set di prova. Abbastanza banale da scrivere.


3
E potresti riuscire a restituire un'immagine dalla fotocamera iSight :)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.