android camera setfocusareas,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);

}

}

对焦区域计算:

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);

}

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

Log.d(TAG,String.format(“Auto focus success =%s。Focus mode:’%s’。Focus on:%s”,

专注,

camera.getParameters()。getFocusMode(),

camera.getParameters()。getFocusAreas()。get(0).rect.toString()));

08-27 11:19:42.240: DEBUG/MyCameraActivity(26268): Auto focus success=true. Focus mode: 'auto'. Focused on: Rect(-109, 643 - -13, 739)

08-27 11:19:55.514: DEBUG/MyCameraActivity(26268): Auto focus success=true. Focus mode: 'auto'. Focused on: Rect(20, 457 - 116, 553)

08-27 11:19:58.037: DEBUG/MyCameraActivity(26268): Auto focus success=true. Focus mode: 'auto'. Focused on: Rect(-159, 536 - -63, 632)

08-27 11:20:00.129: DEBUG/MyCameraActivity(26268): Auto focus success=true. Focus mode: 'auto'. Focused on: Rect(-28, 577 - 68, 673)

视觉上看起来焦点成功地记录在记录区域,但突然之间它失去了焦点并集中在中心(0,0),或者获得了更大部分的SurfaceView。

在计算中使用的focusAreaSize约为210px(96dp)。

在HTC One上测试Camera.getParameters()。getMaxNumFocusAreas()为1。

初始对焦模式(第一次点击之前)设置为FOCUS_MODE_CONTINUOUS_PICTURE。

我在这里做错了吗?

修改相机。区域矩形尺寸或重量不显示任何明显的效果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值