[SwiftUI]Apple iOS Appでカメラアプリを利用する。【AVFoundation】

スポンサーリンク
[SwiftUI]Apple iOS Appでカメラアプリを利用する。【AVFoundation】 SwiftUI
スポンサーリンク

CAMERAアプリをXcodeに実装する。

Cameras and Media Captureを使う

Cameras and Media Capture

AVFoundation Captureで写真をキャプチャし、ビデオとオーディオを記録します。 内蔵カメラとマイクまたは外部キャプチャデバイスを構成します。

AVFoundation Captureを使うとカメラが使えるようになります。

それでは詳細を見に行きます。

写真をキャプチャし、ビデオとオーディオを記録します。 内蔵カメラとマイクまたは外部キャプチャデバイスを構成します。

AVFoundation Captureサブシステムは、iOSおよびmacOSのビデオ、写真、およびオーディオキャプチャサービスに共通の高レベルアーキテクチャを提供します。 次の場合にこのシステムを使用します。

  • カスタムカメラUIを構築して、写真や動画の撮影をアプリのユーザーエクスペリエンスに統合します。
  • フォーカス、露出、安定化オプションなど、写真やビデオのキャプチャをより直接的に制御できるようにします。
  • RAW形式の写真、深度マップ、カスタムのタイミングメタデータを使用したビデオなど、システムカメラのUIとは異なる結果を生成します。
  • キャプチャデバイスから直接、ピクセルまたはオーディオデータストリーミングへのライブアクセスを取得します。

注意

代わりに、ユーザーがアプリ内のシステムカメラUIを使用してメディアをキャプチャできるようにするには、UIImagePickerControllerを参照してください。

キャプチャアーキテクチャの主要部分は、セッション、入力、および出力です。キャプチャセッションは、1つ以上の入力を1つ以上の出力に接続します。 入力は、iOSデバイスまたはMacに組み込まれているカメラやマイクなどのキャプチャデバイスを含むメディアのソースです。 出力は入力からメディアを取得して、ディスクに書き込まれたムービーファイルやライブ処理に使用できる生のピクセルバッファなどの有用なデータを生成します。

詳細は以下を参照する。

Capture setup | Apple Developer Documentation
Configure built-in cameras and microphones, and external capture devices, for media capture.

Requesting Authorization for Media Capture on iOS メディアキャプチャの許可を要求するiOS

写真、オーディオ、およびビデオをキャプチャして保存する許可を求めることにより、ユーザーのプライバシーを尊重します。

iOSでは、ユーザーは各アプリにカメラとマイクへのアクセスを明示的に許可する必要があります。アプリがキャプチャシステムを初めて使用する前に、iOSは、以下に示すように、アプリにカメラへのアクセスを許可するようにユーザーに求めるアラートを表示します。iOSは、このアラートに対するユーザーの応答を記憶しているため、キャプチャシステムを後で使用しても、アラートが再び表示されることはありません。ユーザーは、[設定]> [プライバシー]でアプリの権限設定を変更できます。

メディアをキャプチャする前にアプリに権限があることを確認するには、以下の手順に従います。

アプリのInfo.plistファイルを構成する

iOSでは、システムがカメラまたはマイクの許可を求めたときにユーザーに表示する静的メッセージをアプリが提供する必要があります。

  • アプリでデバイスカメラを使用している場合は、アプリのInfo.plistファイルにNSCameraUsageDescriptionキーを含めます。
  • アプリがデバイスのマイクを使用している場合は、アプリのInfo.plistファイルにNSMicrophoneUsageDescriptionキーを含めます。

キーごとに、アプリがメディアをキャプチャする必要がある理由をユーザーに説明するメッセージを提供します。これにより、ユーザーはアプリにアクセス許可を自信を持って付与できるようになります。

重要

アプリが認証を要求したとき、またはキャプチャデバイスを使用しようとしたときに、適切なキーがアプリのファイルに存在しない場合、システムはアプリを終了します。Info.plist

キャプチャの承認を確認して要求する

キャプチャセッションを設定する前に、必ずメソッドをテストしてください。ユーザーがキャプチャ権限をまだ付与または拒否していない場合、承認ステータスはです。この場合、このメソッドを使用して、iOSにユーザーにプロンプ​​トを表示するように指示します。AVCaptureDevice authorizationStatus(for:)AVAuthorizationStatus.notDeterminedrequestAccess(for:completionHandler:)

この方法は非同期です。iOSが権限アラートを表示している間、アプリは実行を継続します。ユーザーが応答すると、システムは完了ハンドラーを呼び出します。完了ハンドラーのsuccessパラメーターがtrueの場合、キャプチャー・セッションのセットアップと開始に進むことができます。requestAccess(for:completionHandler:)

キャプチャされたメディアを保存する前に認証を要求する

写真やビデオをキャプチャした後、それらをユーザーのフォトライブラリに保存することをお勧めします。写真ライブラリにアクセスするには、ユーザーの許可も必要です(カメラとマイクの許可とは別に)。許可を要求する方法とタイミングは、メディアの保存に使用する機能によって異なります。

  • ほとんどの写真およびビデオキャプチャワークフロー(ライブ写真およびRAW形式のキャプチャを含む)では、およびクラスを使用します。これらのクラスにはフォトライブラリへの読み取り/書き込みアクセスが必要なため、Info.plistのNSPhotoLibraryUsageDescriptionキーを使用して、アクセスを要求するときにユーザーにメッセージを提供する必要があります。詳細については、キャプチャした写真の保存を参照してください。PHPhotoLibraryPHAssetCreationRequest
  • アプリがムービーファイルをフォトライブラリに保存するだけでよい場合、この関数は。のより簡単な代替手段を提供します。この関数はライブラリへの書き込みアクセスのみを必要とするため、Info.plistのNSPhotoLibraryAddUsageDescriptionキーを使用して、フォトライブラリに保存する許可を求めるときにユーザーにメッセージを提供します。UISaveVideoAtPathToSavedPhotosAlbum(_:_:_:_:)PHPhotoLibrary

コメント