【今更だけどandroid.hardware.Cameraを使う】Camera.Parametersの設定値 サポートビデオサイズと推奨ビデオサイズ

このエントリーを Google ブックマーク に追加
Pocket
[`yahoo` not found]

android.hardware.Cameraを使うことで、Android端末にあるカメラデバイスにアクセスして使うことができます。
android.hardware.Cameraは、現在では非推奨となっていますがOpenCV等ではまだまだ使われています。

Android端末に実装されているカメラデバイスは固有の性能があります。
そのため、ある端末では出来るのに別の端末では出来ないということが多々あります。
今回はCamera.Parametersのサポートビデオサイズに関連する設定値を説明します。
下記の実装はすべて前回までに作ったクラスを修正しています。

サポートビデオサイズ

カメラデバイスには固有のサポートビデオサイズと推奨ビデオサイズがあります。
Camera.Parameters内にサポートビデオサイズと推奨ビデオサイズに関連するデータのキーは下記のとおりです。
video-size-valuesカメラデバイスがサポートしているビデオサイズリストのキーです。
video-sizeカメラデバイスに設定されているデフォルトのビデオサイズのキーです。
preferred-preview-size-for-videoカメラデバイスに設定されている推奨ビデオサイズのキーです。

Camera#getSupportedVideoSizes

List getSupportedVideoSizes()はカメラデバイスがサポートしているビデオサイズをCamera.Sizeのリストで返却します。
このメソッドで取得したビデオサイズの中からMediaRecorder#setVideoSizeに渡すことでビデオサイズを変更することができます。

    private void updateCameraParameters() {
        Camera.Parameters parameters = mCamera.getParameters();
        List<Camera.Size> supportedVideoSizes = parameters.getSupportedVideoSizes();
        for (int i = 0; i < supportedVideoSizes.size(); i++) {
            Camera.Size size = supportedVideoSizes.get(i);
            Log.d(TAG, "num : " + i );
            Log.d(TAG, "width: " + size.width );
            Log.d(TAG, "height: " + size.height );
        }
        mCamera.setParameters(parameters);
    }

Camera#getPreferredPreviewSizeForVideo

Camera.Size getPreferredPreviewSizeForVideo()はカメラデバイスがサポートしている推奨ビデオサイズをCamera.Sizeで返却します。
Camera#getPreferredPreviewSizeForVideoで取得したビデオサイズをプレビューとして使用するようにしましょう。

    private void updateCameraParameters() {
        Camera.Parameters parameters = mCamera.getParameters();
        Camera.Size preferredPreviewSizeForVideo = parameters.getPreferredPreviewSizeForVideo();
        Log.d(TAG, "preferredPreviewSizeForVideo width: " + preferredPreviewSizeForVideo.width );
        Log.d(TAG, "preferredPreviewSizeForVideo height: " + preferredPreviewSizeForVideo.height );
        mCamera.setParameters(parameters);
    }