[iPhone] フラッシュLEDを点灯させる

カメラで撮影の時に暗所ではflash LEDが点灯しますが、このflashのみを点灯させてたり、明るさを変えたりしてみたいと思います。


Swift 5.1
Xcode 11.3.1

torchMode

FlashとかTorchと言われるものでカメラでフラッシュを焚く代わりの明るいLED発光です。
これはそもそもカメラで使うものですが、このライトだけ欲しいと考える人は結構いると思いますし、実際簡単なペンライトの代わりになります。同じように画面全体を白で発光させてライトの代わりにしようというアイディアも出てきます。

スクリーンの輝度を取得したり、輝度を変えたりできます。ユーザーが「設定」で変更できるところでもあります。

カメラ機能に付随するのでAVFoundationをインポートして、
AVCaptureDevice.TorchMode.on
AVCaptureDevice.TorchMode.off
からLEDの点灯を制御できます。

ON/OFFだけでなく、レベルを変えることもできます。
setTorchModeOnWithLevel(level)
これはSliderで可変させてみるとわかりやすいでしょう。

ちなみに、このLEDをflashlightとして使うアプリは概ねRejectされます。

4.3 スパム
…また、すでに飽和状態のカテゴリにアプリケーションを追加することは避けてください。App Storeには、おなら、げっぷ、懐中電灯、カーマ・スートラといったアプリケーションが多数あります。App Storeでスパム行為をすると、Developer Programから除名される可能性があります。

Ref: App Store審査ガイドライン — Apple Developer

この中の懐中電灯がflashlightでLEDを使ったアプリなどをさしています。App Storeを見るとライト以外に様々機能を追加しているアプリがありますが、もはやそれはflashlightアプリでは無いのではと思ってしまいます。

サンプルコード

Buttonタップで点灯・消灯を繰り返す
Sliderで点灯時のレベルを変更してみます。

ViewController.swift


storyboardでUIButtonとUISliderを画面に置き、UISliderは「Value Changed」をコードと紐付けすると完成です。



Simlatorではエラーになるので実機で実行して確認しましょう。


関連ページ:

References:
torchMode — AVCaptureDevice | Apple Developer Documentation
AVCaptureDevice.TorchMode — AVCaptureDevice | Apple Developer Documentation
setTorchModeOn(level:) — AVCaptureDevice | Apple Developer Documentation