camera api 3.0を触ってみた
DESCRIPTION
Android L Developer Previewで公開されたCamera API 3.0を触ってみました。TRANSCRIPT
2014/07/30 1
Camera API 3.0 を触ってみた
2014/07/30 22013/04/20 2
自己紹介• 名前:大槻 正樹• TwitterID:@nekomeshi312 こんなアイコンです→
• 仕事:某メーカ所属 ・・・毎日製品にならないような変な物作って遊んでいます。 ・・・仕事は Android とは特に関係のない Sunday Programmer です。 ・・・こんなアプリ作ってます
2014/07/30 3
L Developer Preview で新しい Camera API が公開されました
android.hardware.camera2
2014/07/30 4
何が新しい?
2014/07/30 5
android.hardware.camera2• フル解像度で 30fps での連写 (Burst mode) のサポート
(JPEG は不可 )• フレーム間の撮影設定変更のサポート• RAW 画像撮影のサポート• Zero Shutter Lag, Movie Snapshot のサポート• その他カメラの細かな設定のサポート
2014/07/30 6
とにかく使ってみましょう
2014/07/30 7
android.hardware.camera2• フル解像度で 30fps での連写 (Burst mode) のサポート
(JPEG は不可 )• フレーム間の撮影設定変更のサポート• RAW 画像撮影のサポート• Zero Shutter Lag, Movie Snapshot のサポート• その他カメラの細かな設定のサポート
2014/07/30 8
android.hardware.camera2• フル解像度で 30fps での連写 (Burst mode) のサポート
(JPEG は不可 )• フレーム間の撮影設定変更のサポート• RAW 画像撮影のサポート• Zero Shutter Lag, Movie Snapshot のサポート• その他カメラの細かな設定のサポート
2014/07/30 9
従来の連写方法 1• Camera#setParameters()• Camera#startPreview() とっても遅い• Camera#takePicture()を繰り返す
方法2• Camera#onPreviewFrame() 解像度はせいぜい
fullHD でプレビュー画像を取得する 途中で設定を変
更不可
2014/07/30 10
キャプチャ方法4通り• CameraCaptureSession#capture() ・・・一枚だけ撮影する• CameraCaptureSession#captureBurst() ・・・撮影条件を変えながら複数枚撮影する• CameraCaptureSession#setRepeatingRequest() ・・・同一条件で連続撮影する (Preview 用 )• CameraCaptureSession#setRepeatingBurst() ・・・撮影条件を変えながら連続撮影する
(用途は? )
2014/07/30 11
• CameraCaptureSession#capture() ・・・一枚だけ撮影する• CameraCaptureSession#captureBurst() ・・・撮影条件を変えながら複数枚撮影する
この順番で撮影され、結果に他の撮影が挟まったりしないことが保証されている ←重要
List<CaptureRequest> requestList = new ArrayList<CaptureRequest>(); // 2段明るく撮影する設定を登録captureBuilder.set(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, 6);requestList.add(captureBuilder.build()); // 標準の明るさで撮影する設定を登録captureBuilder.set(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, 0);requestList.add(captureBuilder.build()); // 2段暗く撮影する設定を登録captureBuilder.set(CaptureRequest.CONTROL_AE_EXPOSURE_COMPENSATION, -6);requestList.add(captureBuilder.build()); // 登録された3種類の撮影を連続して実行session.captureBurst(requestList, captureListener, backgroundHandler);
2014/07/30 12
android.hardware.camera2• フル解像度で 30fps での連写 (Burst mode) のサポート
(JPEG は不可 )• フレーム間の撮影設定変更のサポート• RAW 画像撮影のサポート• Zero Shutter Lag, Movie Snapshot のサポート• その他カメラの細かな設定のサポート
ImageFormat にRAW_SENSOR が追加Format は DNG らしい
2014/07/30 13
android.hardware.camera2• フル解像度で 30fps での連写 (Burst mode) のサポート
(JPEG は不可 )• フレーム間の撮影設定変更のサポート• RAW 画像撮影のサポート• Zero Shutter Lag, Movie Snapshot のサポート• その他カメラの細かな設定のサポート
CameraDevice#createCaptureRequest (int templateType)
TEMPLATE_PREVIEWTEMPLATE_RECORDTEMPLATE_STILL_CAPTURETEMPLATE_VIDEO_SNAPSHOTTEMPLATE_ZERO_SHUTTER_LAGTEMPLATE_MANUAL
これを選んでCameraCaptureSession#capture()を呼べば良いらしいがうまくいかない
誰かおせーて orz…
2014/07/30 14
android.hardware.camera2• フル解像度で 30fps での連写 (Burst mode) のサポート
(JPEG は不可 )• フレーム間の撮影設定変更のサポート• RAW 画像撮影のサポート• Zero Shutter Lag, Movie Snapshot のサポート• その他カメラの細かな設定のサポート
CameraMetadata class に定義されている例えば
NR の効き具合を変更したりとか
2014/07/30 15
Camera API 3.0• 実は Kitkat でも隠し API として実装されていた
http://urx.nu/anzT
Camera API 2.0 はどこいった?
2014/07/30 16
幻の CameraAPI2.0
2014/07/30 17
http://urx.nu/apkH
2014/07/30 18
GoogleIO2014 での紹介
http://urx.nu/anzy 30 分あたりから誰かが書いたこれのメモ: http://urx.nu/anA5
2014/07/30 19
ソース今日のテストアプリのソースはこちらから
http://urx.nu/aob1
Google のサンプルアプリのソースはこちらから DL できます。
android-Camera2Basic http://urx.nu/ao4R
android-Camera2Video http://urx.nu/ao4T
2014/07/30 20
FIN