簡體   English   中英

如何檢查相機自動對焦何時完成?

[英]How to check when camera autofocus is done android?

我想知道是否有辦法知道自動對焦何時完成?

我有一個應用程序,可以對視頻進行一些圖像處理。 我要做的第一件事是打開閃光燈和自動對焦,我的問題是我不知道自動對焦是否完成(我需要以編程方式知道),所以我可以開始所有圖像處理僅在自動對焦完成后。

這是我配置相機設置的方式:

@Override
public void surfaceCreated(SurfaceHolder arg0) {
 try {
    camera = Camera.open();

    parameters = camera.getParameters();
    parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
    parameters.setFocusMode(Parameters.FOCUS_MODE_AUTO);
    camera.setParameters(parameters);
    camera.setPreviewDisplay(holder);
    camera.startPreview();

    recorder = new MediaRecorder();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

我只想清楚一點,一切工作正常,我只想知道何時自動對焦完成。

謝謝!

您必須首先檢查camera支持autofocus 以此方式進行檢查,您還可以檢查手機是否支持閃光燈,請點擊此鏈接。 如何在Android中以編程方式打開相機閃光燈?

PackageManager pm = getPackageManager();
if(pm.hasSystemFeature(PackageManager.FEATURE_CAMERA) && pm.hasSystemFeature(PackageManager.FEATURE_CAMERA_AUTOFOCUS)){
       // True means the camera has autofocus mode on. Do what ever you want to do 
}

好的,我找到了答案,我不知道為什么我以前沒想過。 這是新代碼:

@Override
public void surfaceCreated(SurfaceHolder arg0) {
 try {
    camera = Camera.open();

    parameters = camera.getParameters();
    parameters.setFlashMode(Parameters.FLASH_MODE_TORCH);
    parameters.setFocusMode(Parameters.FOCUS_MODE_AUTO);
    camera.setParameters(parameters);
    camera.setPreviewDisplay(holder);
    camera.startPreview();
    camera.autoFocus(new AutoFocusCallback() {

        @Override
        public void onAutoFocus(boolean success, Camera camera) {

        }
    });
    recorder = new MediaRecorder();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

}

(現在已棄用)Camera類中的“ autoFocus”方法僅觸發一個自動對焦事件,而回調僅與該單個事件有關。 未來的自動對焦事件不會再次觸發。

要知道每次需要調用setAutoFocusMoveCallback方法時自動焦點的啟動和停止,並傳入AutoFocusMoveCallback實例。 自動對焦開始時,回調中的“開始”參數為true,自動對焦完成時為false。

camera.setAutoFocusMoveCallback(new AutoFocusMoveCallback() {
    @Override
    public void onAutoFocusMoving(boolean start, Camera camera) {
        // Do whatever you need to respond to auto focus starting and stopping
    }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM