えー、別に火曜日はお休み!とか言うルールではないんですが、
なぜか2週に渡って火曜の更新が止まってますね。
さ、サボってた訳じゃないから・・・
ってことで今日もあんま時間取れないけど作業はーじめーるよー
カメラから映像を受け取る
androidのカメラAPIはいずこや?
ここです。
android Developers - Camera API(英語)
2行で全部回答が出た気がしないでもないけど継続。
なんか元々Cameraクラスがあったんだけど、非推奨で、今はCamera2クラス使ってね!みたいなことが冒頭に書いてありますね。
しかも追加されたのがAPI level 21(Lollipop)からだとか。
Android Developers Documentation - android.hardware.camera2(英語)
とりあえずドキュメントを読んでみる。
ふむ。
使うには…えーと…
あー…
あ、これ凄い手順めんどくさいやつだ。
必要なものと手順とで分けた方がよさそう。
プレビューのために必要なもの
番号 | グループ | 名称 | 前提 | 説明 | 取得方法 |
---|---|---|---|---|---|
1 | カメラ制御 | CameraManagerインスタンス | - | カメラの制御に必要。システムサービスからオブジェクトをもらう。 | getSystemService(CAMERA_SERVICE) |
2 | カメラ制御 | CameraId | 1 | 個々のカメラに割り振られた端末固有の番号。 | (CameraManager).getCameraIds() |
3 | カメラ制御 | CameraCharacteristicsインスタンス | 1,2 | カメラの設定情報。 | (CameraManager).getCameraCharacteristics() |
4 | カメラ制御 | CameraDeviceインスタンス | 1,2 | カメラの実体となるオブジェクト。 | CameraDeviceクラスからのコールバック |
5 | 画面描画 | SurfaceTexture | - | 描画対象となるテクスチャ。カメラから取得した画面を投影する | TextureViewなど |
6 | 画面描画 | Surface | 5 | SurfaceTextureを貼り付ける描画先のターゲット | new Surface( SurfaceTexture ) |
7 | セッション | CaptureSession | 4,6 | カメラとアプリをつなぐもの。カメラで取得した画像はこのセッションを介して取得する | CameraCaptureSessionクラスからのコールバック |
8 | セッション | CaptureRequest | 4,6 | カメラへのキャプチャ要求を示すもの。 | CaptureRequestBuilderを利用する |
- | パーミッション | android.permission.CAMERA | - | カメラへのアクセス要求を示すパーミッション。 | androidマニフェストに記述 |
...たぶんこれで合ってるはず?
図で描いてみないとちょっとわかりにくいかも。
シーケンス図も合った方がいいかなぁ…コールバックも絡んでるから文章でつらつら書いても困るよね…
とりあえずぐちゃぐちゃ弄ってみて、プレビューできるところまではこぎつけました(疲弊)
ソースは試作なのもあってすっごい汚いので、どっちにしても作り直しですね・・・
技研。技研だから・・・
えー...今日は04:20:48でフィニッシュ。