相关疑难解决方法(0)

Android setFocusArea和Auto Focus

我几天来一直在与这个功能作斗争......

看来,相机忽略了(?)我定义的焦点区域.以下是代码片段:

聚焦:

protected void focusOnTouch(MotionEvent event) {
    if (camera != null) {
        Rect rect = calculateFocusArea(event.getX(), event.getY());

        Parameters parameters = camera.getParameters();
        parameters.setFocusMode(Parameters.FOCUS_MODE_AUTO);
        parameters.setFocusAreas(Lists.newArrayList(new Camera.Area(rect, 500)));

        camera.setParameters(parameters);
        camera.autoFocus(this);
    }
}
Run Code Online (Sandbox Code Playgroud)

重点区域计算:

private Rect calculateFocusArea(float x, float y) {
    int left = clamp(Float.valueOf((x / getSurfaceView().getWidth()) * 2000 - 1000).intValue(), focusAreaSize);
    int top = clamp(Float.valueOf((y / getSurfaceView().getHeight()) * 2000 - 1000).intValue(), focusAreaSize);

    return new Rect(left, top, left + focusAreaSize, top + focusAreaSize);
}
Run Code Online (Sandbox Code Playgroud)

几个日志事件来自 Camera.AutoFocusCallback#onAutoFocus

Log.d(TAG, String.format("Auto focus success=%s. Focus mode: '%s'. …

android android-camera

38
推荐指数
2
解决办法
5万
查看次数

标签 统计

android ×1

android-camera ×1