Bagaimana cara menguji kamera di simulator iPhone?

122

Adakah cara untuk menguji kamera iPhone di simulator tanpa harus menggunakan perangkat? Sepertinya ini sangat membosankan.

Sheehan Alam
sumber

Jawaban:

137

Ada sejumlah fitur khusus perangkat yang harus Anda uji pada perangkat, tetapi itu tidak lebih sulit daripada menggunakan simulator. Buat saja target debug untuk perangkat dan biarkan terpasang ke komputer.

Daftar tindakan yang membutuhkan perangkat sebenarnya:

  • telepon yang sebenarnya
  • kamera
  • akselerometer
  • data GPS nyata
  • Kompas
  • getaran
  • pemberitahuan push ...
Tim
sumber
54
Agak menyebalkan, bagaimana jika Anda perlu menguji versi OS sebelumnya yang ditetapkan dalam target penerapan Anda, tebak Anda akan gagal.
marchinram
2
Berikut adalah petunjuk cara menurunkan versi perangkat Anda: iclarified.com/31004/how-to-downgrade-from-ios-7-beta-to-ios-6
knagode
5
Bukankah notifikasi push merupakan fitur khusus perangkat juga?
mgarciaisaia
12
Saya tidak memiliki perangkat ios. Jika saya ingin menguji pada perangkat nyata saya perlu bertanya kepada seseorang .. Itu menyebalkan ..
Luca
10
wtf, tidak semua orang memiliki perangkat iOS hanya karena mereka mengembangkan untuk iOS
pete
7

Saya perlu menguji beberapa overlay kustom untuk foto. Overlay perlu disesuaikan berdasarkan ukuran / resolusi gambar.

Saya melakukan pendekatan ini dengan cara yang mirip dengan saran dari Stefan, saya memutuskan untuk membuat kode respons kamera "dummy".

Ketika simulator sedang berjalan saya mengeksekusi kode dummy ini daripada standar "captureStillImageAsynchronouslyFromConnection".

Dalam kode dummy ini, saya membuat "foto hitam" dengan resolusi yang diperlukan dan kemudian mengirimkannya melalui pipeline untuk diperlakukan seperti foto biasa. Intinya memberikan nuansa kamera yang sangat cepat.

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

Gambar di atas setara dengan foto 8MP yang dikirim sebagian besar perangkat saat ini. Jelas untuk menguji resolusi lain Anda akan mengubah ukurannya.

Craig
sumber
Smart @Craig - Saya telah melakukan sesuatu yang serupa (saya kira tidak begitu pintar) dalam proyek baru-baru ini, tetapi menggunakan gambar yang disimpan dalam sumber daya. Dengan cara ini dimungkinkan untuk mengotomatiskan tangkapan layar dengan fastlane untuk dikirim ke iTunesConnect
Moose
1

Tidak (kecuali mereka telah menambahkan cara untuk melakukannya di 3.2, belum diperiksa).

bpapa
sumber
0

Alasan umum perlunya mengakses kamera adalah membuat tangkapan layar untuk AppStore.

Karena kamera tidak tersedia di simulator, trik yang bagus (satu-satunya yang saya tahu) adalah mengubah ukuran tampilan Anda sesuai ukuran yang Anda butuhkan, hanya waktu untuk mengambil tangkapan layar. Anda akan memangkasnya nanti.

Tentu, Anda perlu memiliki perangkat dengan layar yang lebih besar.

IPad sempurna untuk menguji tata letak dan membuat foto untuk semua perangkat. Tangkapan layar untuk iPhone6 ​​+ harus sedikit direntangkan (diskalakan oleh 1.078125 - Bukan masalah besar…)

Tautan bagus ke referensi cepat resolusi Perangkat iOS: http://www.iosres.com/


Sunting: Dalam proyek baru-baru ini, di mana pengontrol tampilan kamera khusus digunakan, saya telah mengganti AVPreview dengan UIImageView dalam target yang hanya saya gunakan untuk dijalankan di simulator. Dengan cara ini saya dapat mengotomatiskan tangkapan layar untuk unggahan iTunesConnect. Perhatikan bahwa tombol kontrol kamera tidak dalam overlay, tetapi dalam tampilan pratinjau kamera.

Jawaban @Craig di bawah ini menjelaskan metode lain yang menurut saya cukup pintar - Ini juga berfungsi dengan overlay kamera, berbeda dengan metode saya.

Moose
sumber
3
Itulah inti dari pertanyaannya ... Tidak ada kamera di simulator.
Moose
1
Mengapa Anda membutuhkan kamera untuk mengambil screenshot?
Raphael
3
Mengapa Anda perlu mengambil tangkapan layar dari kamera yang Anda maksud? Untuk mengunggah tangkapan layar dari aplikasi kamera Anda yang sedang beraksi di Store, pada ukuran layar yang berbeda.
Moose
0

Baru saja menemukan repo di git yang membantu mensimulasikan fungsi kamera di iOS Simulator dengan gambar, video, atau Kamera MacBook Anda.

Repo

brahimm
sumber
0

Saya tidak pernah mencobanya, tetapi Anda dapat mencobanya! iCimulator

 iCimulator

Dary
sumber
-1

Saya menulis tampilan pengganti untuk digunakan dalam mode debug. Ini mengimplementasikan API yang sama dan membuat callback delegasi yang sama. Dalam kasus saya, saya membuatnya mengembalikan gambar acak dari set pengujian saya. Cukup sepele untuk ditulis.

Stefan Arentz
sumber
3
Dan, Anda dapat membuatnya mengembalikan gambar dari iSight Camera :)