カスタムカメラがフォーカスを見つけた後、フォーカスをロックしようとしています。最初に自動モードに設定されたAFモード:
builder.set(CaptureRequest.CONTROL_AF_MODE,
CaptureRequest.CONTROL_AF_MODE_AUTO);
そしてプレビューに触れた後、焦点距離を見つけ、このコードを使用してAFとAEをロックする必要があります:
builder.set(CaptureRequest.CONTROL_AF_MODE, CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE);
builder.set(CaptureRequest.CONTROL_AE_LOCK, true);
AEのロックはどのデバイスでも正常に機能します。ロックAFはNexus5およびNexus 5xで機能しています。しかし、Samsung S5とS6に関しては、検索フォーカスを試み続けます。
フォーカスをロックする最良の方法は何ですか?
AFをロックするには、capture()
の代わりにrepeatingRequest()
を使用して_AF_TRIGGER
_を1回だけリクエストする必要があります(そうでない場合は、af要求ループに入り、常に残ります)焦点を合わせようとしているが、いくつかのネクサスはそのFWでこれを修正しているので、_Nexus 5
_としてのいくつかのデバイスは、そうでない場合でもうまく焦点を合わせます)
したがって、正しい順序は次のとおりです。
必要に応じて_CONTROL_AF_MODE
_を_CONTROL_AF_MODE_AUTO
_(session.setRepeatingRequest()
経由)および_AF_REGIONS
_および_AE_REGIONS
_に設定します
totalCaptureRequest
からCaptureCallback
をチェックすることで、_CONTROL_AF_MODE
_がすでに自動になっていることを確認するまで待ちます。
ビルダーで_AF_TRIGGER_START
_を_CONTROL_AF_MODE_AUTO
_とともに設定しますが、今回はsession.setRepeatingRequest()
を使用する代わりにsession.capture()
を使用します。
その直後に、_AF_TRIGGER
_を設定して、_AF_TRIGGER_IDLE
_(キャンセルしない!)を設定し、_CONTROL_AF_MODE_AUTO
_とともにsession.setRepeatingRequest()
を再度使用します。
フォーカスされるまで待ちます。_FOCUSED_LOCKED
_または_NOT_FOCUSED_LOCKED
_を受け取ります。
_PASSIVE_FOCUSED
_状態は、_CONTROL_AF_MODE
_が自動ではなく連続画像にある場合のみです!
トリガーを実行する前に、実際にオートフォーカスモードになっていることに注意してください。
すべてのトリガーで常にsession.capture()
を使用する必要があります(_CONTROL_AE_PRECAPTURE_TRIGGER
_も使用)が、その後は必ずsession.repeatingRequest()
のIDLE
(キャンセルしない)にトリガーを配置することを忘れないでください
CaptureRequest.CONTROL_AF_MODE_CONTINUOUS_PICTURE
に焦点を当てることはできません。
AFモードをCONTROL_AF_MODE_AUTO
に設定し、AFトリガー中にFOCUSED_LOCKED
状態を待つ必要があります。 Androidフォーカスマシンが ここにリンクの説明を入力してください