如何像内置摄像头一样实现Android Camera Focusing(连续)

时间:2014-05-21 06:30:13

标签: java android camera autofocus

我已经制作了像内置相机一样的相机应用程序。

我想实现连续聚焦功能,就像内置相机一样。 (这个功能我不触摸屏幕,但相机试图集中注意力。)

所以,将此设置为surfaceCreated:

    Camera.Parameters parameters = mCamera.getParameters();
    parameters.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
    mCamera.setParameters(parameters);

并调用方法:

private void setAutoFocusMoveCallback(Camera camera, AutoFocusMoveCallback cb)
{
    System.out.println("setAutoFocusMoveCallback : Check  " + cb.toString());
    mCamera.cancelAutoFocus();
    camera.setAutoFocusMoveCallback(cb);
}

但这种方法不适用于三星Galaxy S4,S5,Note3。 但另一部智能手机有效!

所以,我想找另一种方法! (嗯......我不明白为什么三星Galaxy S4,S5,Note3不起作用..)

请帮帮我。 请指导另一种方法:)

2 个答案:

答案 0 :(得分:7)

FOCUS_MODE_CONTINUOUS_PICTURE和FOCUS_MODE_CONTINUOUS_VIDEO似乎在三星最新设备(如S5)上无法正常工作,但是,它可以使用FOCUS_MODE_AUTO并通过传感器更改,触摸或亮度更改手动触发setAutofocus。

答案 1 :(得分:1)

关于三星S5焦点功能的一些评论:

  • 使用自动对焦模式时:预览开始后直接设置对焦区域对我不起作用,我不得不在延迟的Runnable(250毫秒)中调用setFocusAreas()和setMeteringAreas()
  • 使用CONTINUOUS_PICTURE时:我想在用户点击屏幕时开始自动对焦。因此,在触摸事件中,我将对焦模式设置为AUTO,并调用自动对焦()。我必须重新设置focusAreas和FocusMeteringAreas(只需调用setfocusAreas(null)和setMeteringAreas(null)),然后再设置回CONTINUOUS_PICTURE焦点模式,以便在自动对焦后再次获得连续焦点。

另请注意,连续对焦忽略了对焦和测光区域,它只关注屏幕中央的物体。

我在三星S5上观察到这种行为..(在S5 neo,S6,S7,XPeria E5,Nexus 5,Wiko UFeel和ASUS ZenPhone2上测试)