[英]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.