2011-11-29 73 views
2

我使用的是摩托羅拉Droid X,由於某種原因,onAutoFocus(布爾成功,相機相機)成功的成功變量總是返回false。它似乎與其他設備,包括Droid 2,所以它似乎是一個設備特定的問題。Droid X相機自動對焦回調總是返回false

我的代碼基本上是這樣的:

camera.autoFocus(new AutoFocusCallback() { 
    @Override 
    public void onAutoFocus(boolean success, Camera camera) { 
     takePicture(); 
    } 
}); 

回答

5

之後調試小時,這個問題是表面視圖的預覽大小設置爲大的尺寸。我不明白爲什麼會影響自動對焦,但將預覽尺寸設置爲較小的尺寸可解決問題。這可能是由於預覽尺寸大於屏幕分辨率造成的,因爲這是唯一不起作用的分辨率。希望這可以幫助任何可能遇到此問題的人。

更新: 更改我的預覽頁面的佈局後,我又遇到了這個問題,好像焦點只是對某些預覽大小失敗。到目前爲止,這些尺寸對我來說是失敗的:720x480,1280x720

+0

我有完全相同的問題; SDK提供的預覽示例代碼有此問題。 –

+1

你如何解決這個問題?人爲地選擇不同的預覽尺寸並希望? – RealCasually

0

我同意dt0的回答。我使用的預覽類從Android樣品,並修復它確定當最佳預覽大小我簡單地增加的縱橫公差:

private Size getOptimalPreviewSize(List<Size> sizes, int w, int h) { 
    final double ASPECT_TOLERANCE = 0.2; // this was 0.1 
    double targetRatio = (double) w/h; 
    ... 
} 

隨着這一變化,而不是最佳大小設置爲720×480(其導致自動對焦失敗),它將最佳尺寸設置爲640x480,並通過。我仍然不明白爲什麼這會解決這個問題(實際的視圖尺寸是734x480),但我很高興。

0

我不得不與0.3我的工作。

final double ASPECT_TOLERANCE = 0.3; // this was 0.1 

另外,我發現,如果我在surfaceCreated(SurfaceHolder holder)稱爲startPreview(),自動對焦將與更好看預覽長寬比工作。但是,這個預覽在銀河系統上完全不起作用。