Droid X相机自动对焦回调始终返回false

时间:2011-11-29 20:29:45

标签: android android-camera

我正在使用摩托罗拉Droid X,出于某种原因,在onAutoFocus(布尔成功,相机相机)成功的成功变量总是返回false。它似乎与包括Droid 2在内的其他设备一起使用,因此它似乎是一个特定于设备的问题。

我的代码基本上是这样的:

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

3 个答案:

答案 0 :(得分:5)

经过数小时的调试后,问题是将曲面视图的预览大小设置为较大的大小。我不明白为什么会影响自动对焦,但将预览尺寸设置为较小的尺寸可以解决问题。这可能是由于预览大小大于屏幕分辨率造成的,因为这是唯一无效的分辨率。希望这有助于其他可能遇到此问题的人。

更新: 我在更改预览页面的布局后再次遇到此问题,似乎焦点因某些预览尺寸而失败。到目前为止,这些尺寸对我来说都失败了:720x480,1280x720

答案 1 :(得分:0)

我同意dt0的回答。我正在使用Android示例中的Preview类,为了解决这个问题,我只是在确定最佳预览大小时增加了宽高比容差:

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;
    ...
}

通过此更改,不是将最佳大小设置为720x480(这会导致自动对焦失败),而是将最佳大小设置为640x480,然后通过。我仍然不明白为什么这会解决问题(实际视图大小为734x480),但我很高兴它确实存在。

答案 2 :(得分:0)

我必须用0.3才能开始工作。

final double ASPECT_TOLERANCE = 0.3; // this was 0.1

另外,我发现如果我在startPreview()中调用了surfaceCreated(SurfaceHolder holder),则自动对焦可以使用更好看的预览宽高比。但是,那么预览在Galaxy上根本不起作用。