2016-10-04 29 views
4

タップをfocusに実装しようとするとcamera2apiを使用しています。戻って私のコールでAndroidカメラ2をタップしてフォーカスする

CaptureRequest.Builder afBuilder = mPreviewBuilder; 

    Rect newRect=new Rect(0,0,200,200); 
    MeteringRectangle meteringRectangle=new MeteringRectangle(newRect,METERING_WEIGHT_DONT_CARE); 

    MeteringRectangle[] areas = afBuilder.get(CaptureRequest.CONTROL_AF_REGIONS); 

    mPreviewBuilder.set(CaptureRequest.CONTROL_AF_REGIONS,areas); 
    mPreviewBuilder.set(CaptureRequest.CONTROL_AF_MODE, CameraMetadata.CONTROL_AF_MODE_AUTO); 
    mPreviewBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_START); 
    mPreviewSession.setRepeatingRequest(mPreviewBuilder.build(), mCaptureCallback, mBackgroundHandler); 

私は継続的にACTIVE_SCAN状態で立ち往生し、時折FOCUS_NOT_LOCKED状態に入るのです。私はFOCUS_LOCKED州に入ることは決してできず、プレビューは決して重視されません。あなただけmPreviewBuilderからデフォルトの地域を再利用している - サムスンのギャラクシーノート1 3.

+0

私は 'java.lang.IllegalArgumentException:rect.leftは非負でなければならない 'を取得しています。あなたは私を案内してください! –

+0

これに関する新しい質問を開始する価値があるかもしれません。問題、コードサンプルなどの情報はありますか? –

+0

'SENSOR_INFO_ACTIVE_ARRAY_SIZE'を使用して解決しました。古いカメラコードと新しい 'Camera2'' MeteringRectangle'を混在させました –

答えて

2

、あなたが実際にAF領域を設定していないを使用して

第2に、領域を[(0,0,200,200)、METERING_WEIGHT_DONT_CARE]に設定しても、画像の左上隅にあります。

第3に、最も重要なのは、AFトリガーを繰り返し設定することです。つまり、すべてのフレームでフォーカスを再開するようカメラに要求しています。あなたが決して放棄しないので、それは決して完了しません。

AF_TRIGGERを1回のキャプチャでのみSTARTに設定する必要があります。 AF_REGIONとAF_MODEの繰り返し要求を、開始しているAFスキャン全体を通して一致させるように設定する必要があります。

+0

ありがとうございました。ええ、長方形はこの記事の例のほうが多かったです。 私はトリガーをソートしようとしますが、これはちょうどそれをいくつかのコンテキストに入れるためにビデオアプリケーションを記録するためのものです。 –

+0

ありがとう、それは繰り返しトリガーの問題でした! –

+0

@YRfreeDevelopers修正プログラムのコードでOPを親切に更新できますか? – ryderd

関連する問題