365連休

にわかのandroidとかの開発メモ。

Camera.Parameters.getSupportedFocusModes()の戻り値をenumにしてみた。

android.hardware.cameraのCamera.Parameters.getSupportedFocusModes()の戻り値はParameters内にString定数として書いてありますが、enumが好みなのでまとめてみました。

 

    /** Camera.Parameters.FOCUS_MODEをまとめたもの<br/>FOCUS_MODE.HOGE.equals()で比較を行うこと<br/>
     * <pre>{@code
     * Camera.Parameters params = camera.getParameters();
     * List<String> list = params.getSupportedFocusModes();
     * for(String v:list){
     *     if(FOCUS_MODE.AUTO.equals(v)){
     *         return true; //オートフォーカスサポート!
     *     }
     * }
     * }</pre>
    */
    public enum FOCUS_MODE {
        /** 自動フォーカス<br/>このモードを開始するにはautoFocus()を実行しなければならない */
        AUTO(Camera.Parameters.FOCUS_MODE_AUTO),
        /** 無限遠<br/>このモードではautoFocus()を実行してはいけない! */
        INFINITY(Camera.Parameters.FOCUS_MODE_INFINITY),
        /** マクロ<br/>このモードを開始するにはautoFocus()を実行しなければならない */
        MACRO(Camera.Parameters.FOCUS_MODE_MACRO),
        /** 固定<br/>このモードではautoFocus()を実行してはいけない! */
        FIXED(Camera.Parameters.FOCUS_MODE_FIXED),
        /** 強化被写体深度モード<br/>距離が異なる被写体にピントが合う!?便利な画像処理技術!!<br/>このモードではautoFocus()を実行してはいけない!*/
        EDOF(Camera.Parameters.FOCUS_MODE_EDOF),
        /** 動画撮影時の連続オートフォーカス。<br/>autoFocus()を実行することができる(?)←しないほうがいいっぽい */
        CONTINUOUS_VIDEO(Camera.Parameters.FOCUS_MODE_CONTINUOUS_VIDEO),
        /** 写真撮影時の連続オートフォーカス。<br/>autoFocus()を実行することができる(?)←しないほうがいいっぽい<br/>解除する場合、他のフォーカスモードを設定する。 */
        CONTINUOUS_PICTURE(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE),
        ;
        private final String v;
        FOCUS_MODE(final String v) {
            this.v = v;
        }
        /** params.getSupportedFocusModes(); の戻り値を突っ込んで自身と比較する */
        public boolean equals(String test) {
            return this.v.equals(test);
        }
    }

どない?チェックメソッドのラッパーなんて作ったときに便利と思ってます。きっと。

 

ところで、JavaEnumってクラスなんですね~

面白くもあり、面倒でもあり。