Como testo uma câmera no simulador do iPhone?

122

Existe alguma maneira de testar a câmera do iPhone no simulador sem ter que implantar em um dispositivo? Isso parece terrivelmente entediante.

Sheehan Alam
fonte

Respostas:

137

Há vários recursos específicos do dispositivo que você precisa testar no dispositivo, mas não é mais difícil do que usar o simulador. Basta criar um destino de depuração para o dispositivo e deixá-lo conectado ao computador.

Lista de ações que requerem um dispositivo real:

  • o telefone real
  • a câmera
  • o acelerômetro
  • dados GPS reais
  • o compasso
  • vibração
  • notificações via push...
Tim
fonte
54
Isso é péssimo, e se você precisar testar em uma versão anterior do sistema operacional definida no seu destino de implantação, acho que estaria ferrado.
marchinram
2
Aqui estão as instruções como fazer o downgrade seu dispositivo: iclarified.com/31004/how-to-downgrade-from-ios-7-beta-to-ios-6
knagode
5
As notificações por push também não eram um recurso apenas para dispositivo?
Mgarciaisaia
12
Eu não possuo um dispositivo iOS. Se eu quiser teste em um dispositivo real eu preciso perguntar a alguém .. Isso é péssimo ..
Luca
10
wtf, nem todo mundo tem um dispositivo iOS só porque eles estão desenvolvendo para iOS
pete
7

Eu precisava testar algumas sobreposições personalizadas para fotos. As sobreposições precisavam ser ajustadas com base no tamanho / resolução da imagem.

Abordei isso de uma maneira semelhante à sugestão de Stefan. Decidi codificar uma resposta de câmera "fictícia".

Quando o simulador está em execução, eu executo esse código fictício em vez do padrão "captureStillImageAsynchronouslyFromConnection".

Nesse código fictício, eu construo uma "foto preta" da resolução necessária e a envio através do pipeline para ser tratada como uma foto normal. Essencialmente, proporcionando a sensação de uma câmera muito rápida.

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

A imagem acima é equivalente a fotos de 8MP que a maioria dos dispositivos atuais envia. Obviamente, para testar outras resoluções, você alteraria o tamanho.

Craig
fonte
Smart @Craig - Fiz algo semelhante (não tão inteligente, acho) em um projeto recente, mas usei uma imagem armazenada em recursos. Dessa forma, é possível automatizar as capturas de tela com a fastlane para enviar no iTunesConnect
Moose
1

Não (a menos que tenham adicionado uma maneira de fazer isso no 3.2, ainda não foram verificados).

bpapa
fonte
1

Um motivo comum para a necessidade de acessar a câmera é fazer capturas de tela para a AppStore.

Como a câmera não está disponível no simulador, um bom truque (o único que eu conheço) é redimensionar sua visualização no tamanho que você precisa, apenas o tempo necessário para tirar as capturas de tela. Você irá cortá-los mais tarde.

Claro, você precisa ter o dispositivo com a tela maior disponível.

O iPad é perfeito para testar layouts e criar instantâneos para todos os dispositivos. As capturas de tela para iPhone6 ​​+ terão que ser um pouco ampliadas (com escala de 1.078125 - Não é grande coisa…)

Bom link para uma resolução rápida de dispositivos iOS ref: http://www.iosres.com/


Editar: em um projeto recente, em que um controlador de exibição de câmera personalizado é usado, substituí o AVPreview por um UIImageView em um destino que eu só uso para executar no simulador. Dessa forma, eu posso automatizar as capturas de tela para o upload do iTunesConnect. Observe que os botões de controle da câmera não estão em sobreposição, mas em uma visualização da visualização da câmera.

A resposta do @Craig abaixo descreve outro método que eu achei bastante inteligente - ele também funciona com sobreposição de câmera, ao contrário da minha.

alce
fonte
3
Esse é o ponto da pergunta ... Não há câmera no simulador.
Moose
1
Por que você precisaria de uma câmera para tirar screenshots?
Raphael
3
Por que você precisaria tirar screenshots da câmera que você quer dizer? Para fazer o upload de capturas de tela do aplicativo da câmera em ação na loja, em diferentes tamanhos de tela.
Moose
0

Acabei de encontrar um repositório no git que ajuda a Simular as funções da câmera no iOS Simulator com imagens, vídeos ou sua câmera do MacBook.

Repo

Brahimm
fonte
0

Eu nunca tentei, mas você pode tentar! iCimulator

 iCimulator

Dary
fonte
-1

Eu escrevi uma exibição de substituição para usar no modo de depuração. Ele implementa a mesma API e faz os mesmos retornos de chamada delegados. No meu caso, fiz com que ele retornasse uma imagem aleatória do meu conjunto de testes. Bastante trivial de escrever.

Stefan Arentz
fonte
3
E, você poderia fazê-lo para retornar uma imagem da câmera iSight :)