カメラのsetColorEffectの不具合の解決策

朗報です。

Androidのカメラアプリで、カラーエフェクトを変更後、元に戻すために、"none"を指定しても無視される、そして、アプリを終了しても保持される、という不具合の解決策を発見しました。

どうやら、カメラのプレビュー映像のフォーマットを合わせて設定すると直るようです。
ざっとこんな感じで、場合分け。

openがブログのセキュリティ上ダメって言われたので、全角にしてます。


public void setColorEffect(String effect) {

if ( effect != null ) {

if ( effect.equals(Camera.Parameters.EFFECT_NONE) ) {// エフェクトなしに戻す

if ( MANUFACT_KEIAN ) {//▼ 恵安タブレット

Camera.Parameters params = mCamera.getParameters();
params.setColorEffect( effect );
mCamera.setParameters(params);
// 追加で映像フォーマットを指定
params.setPreviewFormat( ImageFormat.NV21 );
mCamera.setParameters(params);

} else if ( TerminalState.isManufacturer(ParamCamera.MANUFACT_S5110B) ) {//▼ s5110b

// 解放⇒生成で直る
mCamera.close();
mCamera.OPEN(getHolder());
mCamera.startPreview();

} else {//▼ 一般端末

Camera.Parameters params = mCamera.getParameters();
params.setColorEffect( effect );
mCamera.setParameters(params);

}

} else {// エフェクトあり

Camera.Parameters params = mCamera.getParameters();
params.setColorEffect( effect );
mCamera.setParameters(params);

}

}

}

[PR]
by miries | 2015-01-30 15:19 | Android


<< カメラのシーンモード カメラのカラーエフェクトのバグ >>