折りたたみ式デバイスとカメラ

注: このページでは、Camera2 パッケージについて説明します。アプリに Camera2 の特定の低レベル機能が必要な場合を除き、CameraX を使用することをおすすめします。CameraX と Camera2 は、どちらも Android 5.0(API レベル 21)以降に対応しています。

カメラ デベロッパーは、折りたたみ式デバイスで実行されるカメラ アプリケーションの開発時に、独自の課題に直面することがあります。ディスプレイの向き、カメラの向き、向きに関するいくつかの前提が有効なことが多いスマートフォンとは異なり、折りたたみ式デバイスにはさまざまなフォーム ファクタ、ディスプレイ レイアウト、カメラの組み合わせがあります。

スマートフォンには通常、ディスプレイと同じ縦向きのカメラが搭載されています。ただし、折りたたみ状態によっては、この限りではない場合があります。広げた画面には、縦向きのセンサーと横向きのセンサーが 1 つずつ搭載されている場合があります。

カメラ アプリケーションで SurfaceTexture またはカスタム レンダリング パイプラインを使用している場合は、カメラのセンサーの向きに注意してください。

これにより、レンダリングされたコンテンツは常に物理的に直立し、ピクセルは正方形のままになり、水平方向または垂直方向の伸びを回避できます。

このガイドでは、Camera2 デベロッパーが考慮すべき事項と、さまざまな折りたたみ式デバイスの状態に合わせてカメラ プレビューのレンダリングを調整する手順について説明します。

デバイスの状態の切り替えがカメラに与える影響

折りたたみ式デバイスには、以下が含まれます。

  • 2 台以上の物理ディスプレイ
  • 複数の物理カメラデバイス

これらのデバイスは、デバイスのステータスによってはアクティブになることがあります。デバイスの状態の処理を簡素化するために、一部のデバイスでは、複数の物理センサーで構成される論理カメラを実装しています。

デベロッパーがこのような論理カメラ デバイスでプレビュー ストリーミングを開いて有効にすると、カメラは特定の折りたたみ状態に応じて物理デバイスを自動的に切り替えます。

たとえば、2 つのディスプレイを備えた折りたたみ式デバイスについて考えてみましょう。

  • 折りたたみ状態の通常の縦向き画面と、縦向きの物理的な「外側」前面カメラ。
  • 展開状態の折りたたみ式画面。展開したディスプレイに対して横向きの「内側」前面物理カメラが搭載されています。

アプリが前面の論理カメラからストリーミングしているときにユーザーがデバイスを折りたたんだり開いたりすると、デバイス実装はデバイスの状態の切り替えに応じて内部物理センサーと外部物理センサーを切り替える場合があります。

ディスプレイの切り替えにより、アプリの UI を調整する必要が生じることがあります。

UI の調整に加えて、デベロッパーは、アクティブな物理カメラに関してカメラ プレビューのレンダリング方法を調整することを検討する必要があります。

カメラ デバイスの物理スイッチ

論理カメラデバイス インターフェースは、物理カメラスイッチを処理するために必要な API を提供します。デベロッパーは、アクティブな物理 ID の値をモニタリングする必要があります。

折りたたみ式デバイスでは、折りたたみや展開など、折りたたみ式デバイスの状態の切り替えに応じて、有効な物理 ID の取得結果が変化することがあります。

このような場合、デベロッパーは現在有効な物理 ID を使用し、対応するカメラの特性を確認する必要があります。

プレビューのレンダリングに影響する可能性のあるカメラの最も重要な特性は、センサーの向きレンズの向きです。

アプリのプレビュー レンダリング パイプラインが静的カメラ パラメータに依存して最終的な変換行列を計算する場合は、現在の値を渡してグラフィック変換を更新してください。

カメラ プレビュー パイプラインと変換の計算方法について詳しくは、カメラ プレビュー ガイドをご覧ください。

その他の無効な前提

カメラの特性値をキャッシュに保存することはおすすめしません。

カメラの特性が変わる可能性があるため、デバイスの折りたたみ状態や展開状態にかかわらず、カメラの特性が変わらないことを前提とすることはできません。そのため、カメラの特性を保存して再利用しないでください。代わりに、カメラの特性を確認してください。

カメラ アプリケーションが外側の前面ディスプレイで起動し、現在の前面カメラと背面カメラの特性のキャッシュを保存する場合について考えてみましょう。アプリケーションが内部ディスプレイで再起動すると、アクティブなフロント フィジカル センサーの向きが異なる場合があり、望ましくないプレビュー レンダリングの副作用が発生する可能性があります。