7

そのため、古いカメラで必要な機能を思い通りに作成することができました。

mCamera.autoFocus(autoFocusCallback); を使用 フォーカスがあることを検出し、プレビュー モードで必要なコードを実行します。

今、camera2 API で同じことを行う方法を把握するのに苦労しています。私の最初のアイデアは、私が使用することでした

        private void process(CaptureResult result) {
        switch (mState) {
            case STATE_PREVIEW: {
                // We have nothing to do when the camera preview is working normally.
                int afState = result.get(CaptureResult.CONTROL_AF_STATE);
                //if (CaptureResult.CONTROL_AF_STATE == afState) {
                    Log.d("SOME KIND OF FOCUS", "WE HAVE");
                //}

                break;
            }
}

しかし、フォーカスを得たことを示す何らかの状態を見つけることができません。Camera2 API でこれを行う方法を知っている人はいますか?

4

2 に答える 2

5

興味のある人のために、私はこれを混ぜ合わせました:

private CameraCaptureSession.CaptureCallback mCaptureCallback
        = new CameraCaptureSession.CaptureCallback() {

    private void process(CaptureResult result) {
        switch (mState) {
            case STATE_PREVIEW: {

                int afState = result.get(CaptureResult.CONTROL_AF_STATE);
                if (CaptureResult.CONTROL_AF_TRIGGER_START == afState) {
                    if (areWeFocused) {
                        //Run specific task here
                    }
                }
                if (CaptureResult.CONTROL_AF_STATE_PASSIVE_FOCUSED == afState) {
                    areWeFocused = true;
                } else {
                    areWeFocused = false;
                }

                break;
            }
        }
    }

   @Override
    public void onCaptureProgressed(CameraCaptureSession session, CaptureRequest request,
                                    CaptureResult partialResult) {
        process(partialResult);
    }

    @Override
    public void onCaptureCompleted(CameraCaptureSession session, CaptureRequest request,
                                   TotalCaptureResult result) {
        process(result);
    }
};

それは十分に機能します:)

于 2015-04-30T12:33:48.753 に答える
3

あなたは基本的にそれを手に入れました。確認できる状態とその遷移のリストは、こちらにあります

使用しているものによって異なりますが、一般的にはまたはCONTROL_AF_MODEをチェックしますが、カメラがシーンに焦点を合わせられない場合に備えて およびのケースが必要な場合があります。FOCUSED_LOCKEDPASSIVE_FOCUSEDNOT_FOCUSED_LOCKEDPASSIVE_UNFOCUSED

于 2015-04-29T17:02:15.493 に答える