3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

android カメラアプリを作ろう その2 androidのカメラから映像を取得する

Last updated at Posted at 2018-06-20

えー、別に火曜日はお休み!とか言うルールではないんですが、
なぜか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マニフェストに記述

...たぶんこれで合ってるはず?
図で描いてみないとちょっとわかりにくいかも。
シーケンス図も合った方がいいかなぁ…コールバックも絡んでるから文章でつらつら書いても困るよね…

とりあえずぐちゃぐちゃ弄ってみて、プレビューできるところまではこぎつけました(疲弊)

↓こんな感じ
Capture_00.jpg


ソースは試作なのもあってすっごい汚いので、どっちにしても作り直しですね・・・
技研。技研だから・・・

えー...今日は04:20:48でフィニッシュ。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?