Cameraプレビュー画像を取得する|Android開発

以前書いた記事とは違うandroid.hardware.Cameraでのプレビュー画像取得方法です。
こちらの方がよく使うパターンですね。

メンバ変数

byte[] mCallbackBuffer;
Camera mCamera;

プレビューバッファの指定

ここが以前の記事と異なる部分です。
あらかじめアプリ側で用意したバッファにプレビュー画像を出力します。
以前の記事ではsetPreviewCallback()でしたが、ここではsetPreviewCallbackWithBuffer()をコールします。

Camera.Parameters params = mCamera.getParameters();
params.setPreviewFormat(ImageFormat.NV21);
params.setPreviewSize(1920, 1080);
mCallbackBuffer = new byte[1920 * 1080 * ImageFormat.getBitsPerPixel(params.getPreviewFormat()) / 8];
mCamera.addCallbackBuffer(mCallbackBuffer);
mCamera.setPreviewCallbackWithBuffer(mPreviewCallback);

上記以外は以前の記事と同じになります。startPreview()でプレビューを開始します。

ここではプレビューサイズを固定(1920 x 1080)にしていますが、実際はプレビューで指定可能なサイズを使います。

プレビューコールバック

プレビューコールバック関数でプレビューデータを処理します。再度addCallbackBuffer()をコールすることで続けてデータが通知されます。

private final Camera.PreviewCallback mPreviewCallback = new Camera.PreviewCallback() {
    @Override
    public void onPreviewFrame(byte[] data, Camera camera) {
        // 再指定
        mCamera.addCallbackBuffer(mCallbackBuffer);
    }
};

プレビュー終了

mCamera.setPreviewCallbackWithBuffer(null);
このエントリーをはてなブックマークに追加
にほんブログ村 IT技術ブログへ

関連コンテンツ

スポンサードリンク

Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です