1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AVFoundationを使ったカメラの実装:フラッシュの制御Tips

Last updated at Posted at 2018-08-27

この記事ではAVFoundationを使って、カスタムカメラを実装する際のフラッシュの実装のTipsを2つ紹介します。

確認した環境

iOS11

1. supportedFlashModes の確認

iOS端末の中にはフラッシュ機能がないカメラが存在するため、その考慮が必要です。
具体的にはインカメラや一部のiPadのアウトカメラです。
フラッシュ機能がないカメラでフラッシュが on or autoAVCapturePhotoOutputcapturePhoto メソッドを呼ぶとクラッシュします。

対応方法

AVCapturePhotoOutputsupportedFlashModes でサポートされているフラッシュモードが確認できるため、サポートされているフラッシュモードのみ設定するようにします。

2. 端末が高温で使えない場合の考慮

iOS端末は高温になるとフラッシュ機能が使えなくなります。
標準のカメラアプリでも使用できなくなり、以下のような表示になります。
IMG_01C603296427-1.jpeg IMG_01C603296427-2.jpeg

Appleのドキュメントにもそのような記載があります。

対応方法

AVCaptureDeviceisFlashAvailable でフラッシュが使えるか確認できるため、この値を監視することになります。
私のケースでは対応する必要がなかったため実装はしていないのですが、 この値を変更を受け取るDelegateメソッド等は用意されていないようなので、KVOで監視することになると思います。
このケースでフラッシュが使えない状況で、フラッシュが on or autoAVCapturePhotoOutputcapturePhoto メソッドを呼んでも、 1. とは違い、クラッシュしませんでした。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?