質問: Android開発を行っているのですが、 使いたいライブラリにandroid.hardware.Cameraが使われています。 このオブジェクトはAPIが21になってから廃止されたため、 android.hardware.camera2に置き換えようと思っています。 しかし、二つのオブジェクトの紹介ページを見ても camera2とCameraのオブジェクトに互換性が無いように思えます。 (CameraのオブジェクトにはParametersのクラスがあるのに camera2のオブジェクトにはそれが無い等) どのようにcamera2に換えていったらよいでしょうか? android.hardware.Cameraの紹介ページ http://developer.android.com/reference/android/hardware/Camera.html android.hardware.camera2の紹介ページ http://developer.android.com/reference/android/hardware/camera2/package-summary.html
回答: 実際に実装してみたわけではありませんが、 APIリファレンスからは、android.hardware.Camera.Parametersは、android.hardware.camera2.CameraMetadataが対応しているように読み取れるので、カメラに必要な情報はcamera2パッケージでもそろっていると思われます。 下記サイトにCamera/camera2の違いが簡単にまとめられていますが、リソースの確保や撮影結果の取得など、かなり手順が変わっているようです。 どのようなライブラリを使用されているかわかりませんが、camera2のライブラリを探すか、必要な機能をリストアップしてゼロから構築した方が早そうです。 AndroidのCamera2 APIのサンプル > > [ 旧Camera API との違い ] > > ・プレビューは SafaceView でなく TextureView を使う。 > > ・撮影した画像は android.media.ImageReader 経由で取得する。 > > ・オートフォーカスや露出はアプリ側がプレビューをハンドリングしながら行う。 > > 旧APIは最初にパラメータ設定して後はお任せな感じでしたが Camera2 API はアプリ側のロジックでカメラを制御していく感じです。 細かな制御ができるようになった分、アプリが複雑になった印象です。 > > > AndroidのCameraの使い方 > > [カメラを使用するために必要な要素] > > 大きく分けると以下のような要素を知る必要があります。 > > 1. カメラデバイスの取得 (android.hardware.Camera) > > 2. 表示先のViewの作成 (SurfaceView) > > 3. 各種パラメータの設定 (Camera.Paramaters) > > 4. 写真・動画の撮影、ファイルへの保存処理等 > > > [LollipopのCamera2パッケージについて] > > 撮影するために必要な手順は、以下のような感じでしょうか。 > > ・CameraManagerのインスタンスを取得する > > ・デバイスの情報を確認するために、CameraCharacteristicsを取得・参照する。 > > ・Surfaceを取得する。 > > ・CameraCaptureSessionを生成する。 > > ・CaptureRequestを生成する。 > > ・(撮影要求を出す?) > > ・TotalCaptureResultを受け取る(メタデータなど) > > ・(画像データを受け取る?) > > >