2011-11-29 72 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(),自动对焦将与更好看预览长宽比工作。但是,这个预览在银河系统上完全不起作用。