9

カメラを開いて Android アプリを設定し、ポイントをカメラにタッチして手動フォーカスを有効にします。カメラは、私が画面に向けたポイントに再び焦点を合わせることができます。方法論またはどのコンポーネントから変更を開始すればよいか教えてください。

以下は私のコードです:

public void takePhoto(File photoFile, String workerName, int width, int height, int quality) {
    if (getAutoFocusStatus()){
        camera.autoFocus(new AutoFocusCallback() {
            @Override
            public void onAutoFocus(boolean success, Camera camera) {
                camera.takePicture(shutterCallback, rawCallback, jpegCallback);
            }
        }); 
    }else{
        camera.takePicture(shutterCallback, rawCallback, jpegCallback);
    }

this.photoFile = photoFile;
this.workerName = workerName;
this.imageOutputWidth = width;
this.imageOutputHeight = height;
}

public void takePhoto(File photoFile, int width, int height, int quality) {
takePhoto(photoFile, null, width, height, quality);
}
4

3 に答える 3

14

この回答は、単一の領域に焦点を合わせる方法を示すものではありませんが、最初にカメラの焦点を正確に合わせる方法を示すのに役立ちます.

これが私がやったことです。これは私のデバイス (HTC の Droid DNA) で動作し、Android Studio に組み込まれています。

と の両方OnSurfaceChanged()OnSurfaceCreated()、次のコードがあります: (mCameraは私のプライベートCameraオブジェクトです)

        mCamera.stopPreview();
        Camera.Parameters p = mCamera.getParameters();
        p.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);

        mCamera.setParameters(p);
        mCamera.setPreviewDisplay(surfaceHolder);
        mCamera.startPreview();
        mCamera.autoFocus(null);

コンストラクターでは、配置する必要があります

        setFocusable(true);
        setFocusableInTouchMode(true);

これにより、フォーカス イベントを受け取ることができます。それらをキャプチャすることについては...

 public boolean onTouchEvent(MotionEvent event){
    if(event.getAction() == MotionEvent.ACTION_DOWN){
        Log.d("down", "focusing now");

        mCamera.autoFocus(null); 
    }

    return true;
}
于 2014-02-19T04:50:10.920 に答える
0

ここで重要なのは、camera.autoFocus(autoFocusCallBack) を呼び出すことです。メソッド autofocusCallback.onAutoFocus(boolean success, Camera camera) にフォーカスした後、camera.takePicture (Camera.ShutterCallback Shutter, Camera.PictureCallback raw, Camera.PictureCallback jpeg) を呼び出します。 )

もっと見る:http: //achorniy.wordpress.com/2009/12/29/how-to-use-autofocus-in-android/

また

表面が変更され、プレビューの前に、焦点距離を自動的に設定するオートフォーカス設定を使用して、プレビューを開始し、表示されているものにオートフォーカスすることができます...

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {

// Set camera properties first
Camera.Parameters parameters = camera.getParameters();
        parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
        camera.setParameters(parameters);

camera.startPreview();

camera.autoFocus(null);

}

クレジット:クラスのアンドロイドカメラにオートフォーカスを配置する場所

于 2012-10-12T02:02:51.367 に答える