Androidカメラの露出やオートフォーカスの制御

Androidカメラの露出やオートフォーカスの制御

カメラでオートフォーカスを使うには
autoFocus()
を使う

露出を変更したいのなら
setExposureCompensation()
を使う

これらをやる前に、まずは
カメラプレビューを実装しておくこと

次に、端末がオートフォーカス対応か判定する

public static boolean isSupportFocus(Context context){

return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_AUTOFOCUS);

}

これで、結果がtrueなら使えるし
falseなら使えない

判定ができたらオートフォーカスを使うため
Camera.autoFocus()を使う

private void setCameraAutoFocus(){

if(mCamera !=null && mIsSupportFocus){

mCamera.autoFocus(new AutoFocusCallback(){

@Override
public void onAutoFocus(boolean success, Camera camera){
//AutoFocusのリセット
mCamera.cancelAutoFocus();

//AutoFocus開始
mCamera.autoFocus(null);
}
});
}
}

そして、露出情報の取得
露出を変更する前に
デバイスに搭載されているカメラの
露出情報を取得する

これで取得した値を元に
現在の露出値や
露出値の上限、下限を設定

//下限の設定
mMinExposure = mCamera.getParameters().getMinExposureCompensation();

//上限の設定
mMaxExposure = mCamera.getParameters().getMaxExposureCompensation();

//現在の露出値の算出
mExposureValue = mCamera.getParameters().getExposureCompensation();

そして、事前に取得した露出情報を露出の値を変更する

mExposureValue++;

//露出値の上限以上なら補正
if(mExposureValue > mMaxExposure){
mExposureValues = mMinExposure;
}

Parameters param = mCamera.getParameters();
param.getExposureCompensation(mExposureValue);

mCamera.setParameters(param);

mBtnExposure.setText(getString(R.string.exposure )+ mExposureValue);

次に、システム要件にオートフォーカスが必要なことを明記する
これで、非対応端末はインストールできる

これは、AndroidManifest.xmlへ追記する

<uses-feature android:name="android.hardware.camera.autofocus"/>

オートフォーカス連続使用の注意点として
デバイスによっては強制終了の可能性があるため
事前に
Camera.cancelAutoFocus()を呼び出し
オートフォーカスをリセットすれば安定する

あと、露出情報については
CameraParametersのメソッドをつかうことで
各露出情報を取得できる

getMaxExposureCompensation()
露出の上限

getMinExposureCompensation()
露出の下限

getExposureCompensation()
現在の露出値

コメントを残す

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