iPhoneシミュレータでカメラをテストするにはどうすればよいですか?


122

デバイスに展開せずにシミュレータでiPhoneカメラをテストする方法はありますか?これはひどく退屈なようです。

回答:


137

デバイスでテストする必要のあるデバイス固有の機能は多数ありますが、シミュレータを使用するよりも簡単です。デバイスのデバッグターゲットをビルドし、コンピューターに接続したままにします。

実際のデバイスを必要とするアクションのリスト:

  • 実際の電話
  • カメラ
  • 加速度計
  • 実際のGPSデータ
  • コンパス
  • 振動
  • プッシュ通知...

54
これはちょっと困ったことです。展開ターゲットに設定されている以前のバージョンのOSでテストする必要があるとしたら、それは面倒だと思います。
marchinram 2010

2
デバイスをダウングレードする手順は次のとおり
knagode

5
プッシュ通知もデバイスのみの機能ではありませんか?
mgarciaisaia 2016

12
私はiOSデバイスを所有していません。私は、実際のデバイス上でテストする場合、私は誰かに依頼する必要があります..吸うこと
ルカ

10
iOS用に開発しているからといって、誰もがiOSデバイスを持っているわけではありません
pete

7

写真のカスタムオーバーレイをテストする必要がありました。オーバーレイは、画像のサイズ/解像度に基づいて調整する必要がありました。

ステファンからの提案と同様の方法でこれに取り組み、「ダミー」のカメラ応答をコード化することにしました。

シミュレーターの実行中に、標準の「captureStillImageAsynchronouslyFromConnection」の代わりにこのダミーコードを実行します。

このダミーコードでは、必要な解像度の「ブラックフォト」を作成し、それをパイプライン経由で送信して、通常の写真のように扱います。基本的に非常に高速なカメラの感覚を提供します。

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

上の画像は、当日のデバイスのほとんどが送信する8MP写真に相当します。明らかに他の解像度をテストするには、サイズを変更します。


スマート@クレイグ-最近のプロジェクトで似たようなことをしましたが(それほどスマートではないと思いますが)、リソースに保存された画像を使用しました。このようにして、fastlaneでスクリーンショットを自動化してiTunesConnectで送信することができます
Moose

1

いいえ(3.2で方法を追加していない限り、まだチェックされていません)。


1

カメラにアクセスする必要がある一般的な理由は、AppStoreのスクリーンショットを作成することです。

カメラはシミュレーターでは利用できないため、良い方法(私が知っている唯一の方法)は、スクリーンショットを撮る時間だけで、必要なサイズにビューのサイズを変更することです。後でトリミングします。

もちろん、より大きな画面のデバイスを利用できる必要があります。

iPadは、レイアウトをテストし、すべてのデバイスのスナップショットを作成するのに最適です。iPhone6 +のスクリーンショットは少し引き伸ばす必要があります(1,078125でスケーリング-大したことではありません…)

iOSデバイスの解像度のクイックリファレンスへの適切なリンク:http : //www.iosres.com/


編集:カスタムカメラビューコントローラーが使用されている最近のプロジェクトでは、シミュレーターでの実行にのみ使用するターゲットで、UIPreviewをAVImageviewに置き換えました。この方法で、iTunesConnectアップロードのスクリーンショットを自動化できます。カメラコントロールボタンはオーバーレイではなく、カメラプレビューのビューにあることに注意してください。

以下の@Craigの回答は、私がかなり賢いと感じた別の方法について説明しています。これは、私の場合とは逆に、カメラオーバーレイでも機能します。


3
それが問題のポイントです...シミュレータにはカメラがありません。
ムース

1
スクリーンショットを撮るのにカメラが必要なのはなぜですか?
ラファエル

3
どうしてカメラのスクリーンショットを撮る必要があるのですか?動作中のカメラアプリケーションのスクリーンショットをさまざまな画面サイズでストアにアップロードします。
ムース

0

画像、ビデオ、またはMacBookカメラを使用してiOSシミュレーターでカメラ機能をシミュレートするのに役立つgitのリポジトリを見つけました。

レポ



-1

デバッグモードで使用する代替ビューを作成しました。同じAPIを実装し、同じデリゲートコールバックを作成します。私の場合、テストセットからランダムな画像を返すようにしました。書くのはかなり簡単です。


3
また、iSightカメラから画像を返すようにすることもできます:)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.