miyabihitoの日記

個人的な技術メモ

Camera

カメラの扱い方
・AndroidManifest


上記、二つの記述が必要。
上は、カメラを持つ端末にのみインストールを許す指定。
下は、アプリにカメラを扱う許可を与える指定。

SurfaceHolder.setType(SURFACE_TYPE_PUSH_BUFFERS);の記述が必要
(ドキュメントでは、deprecatedと書かれていたが、3.0以前のバージョンでは必要)

・Camera
open():スタティックメソッド。カメラオブジェクトの取得。
setPreviewDisplay():カメラ映像の表示先Surfaceの指定。(引数はSurfaceHolder)
getParameters():カメラの設定の取得
setParameters():カメラの設定
startPreview():カメラ映像の表示の開始
stopPreview():カメラ映像の表示の停止
release():他のアプリがカメラを利用できるように、解放する。
takePicture():写真を撮る。4つのコールバックを指定できる。
        (最後のjpegのコールバックで、写真のJPEG画像が取得できるから、とりあえずそれだけでいいのかな。)
        startPreviewとstopPreviewの間で実行する必要がある。
        撮影後はプレビューが止まるので、再度startPreviewする必要がある。
autoFocus():オートフォーカスを起動する。引数に起動完了後に呼出されるコールバックを指定する。
       #これを使わないと写真がブレブレ。
cancelAutoFocus():フォーカスをデフォルトに戻す。


・ShutterCallback
撮影直後に呼出されるコールバックインターフェース。シャッター音を出したりするのに使う。
onShutter():撮影直後に呼出されるメソッド。引数なし。

・PictureCallback
撮影した画像を渡されるコールバックインターフェース。
ここで受け取った画像を保存したりする。
onPictureTaken:画像をバイト配列で受け取る。BitmapFactory.decodeByteArrayでBitmapオブジェクトに変換できる。

・AutoFocusCallback
autoFucus()のコールバックインターフェース
onAutoFocus():オートフォーカス完了後に呼出されるメソッド。

・Camera.Parameters
カメラの各種設定を扱うクラス
getSupportedPreviewSizes():カメラのサポートする解像度のリスト取得
setPreviewSize():プレビュー表示のサイズ指定。画面のサイズ以下に指定しておく。
setColorEffect():カラーエフェクトの設定。(利用前にサポートされているか要確認)

・Camera.ShuttureCallback

・Camera.PictureCallback

エフェクトも掛けられる。
顔認識機能も提供されているので、面白そうだから色々やってみたい。