我正在开发一款使用相机预览和拍照的
Android应用.我对星系S4使用FOCUS_MODE_CONTINUOUS_PICTURE,发现聚焦效果非常好.
但是,在星系S5上,FOCUS_MODE_CONTINUOUS_PICTURE很少能够正确找到焦点.相机将变焦,但会反复缩小焦距.
有没有人知道为什么FOCUS_MODE_CONTINUOUS_PICTURE在S5上如此糟糕,或者任何人都可以确认他们是否有同样的问题?
解决方法
我也遇到过同样的问题.
Galaxy S5以及可能的其他设备在连续图像聚焦模式下似乎没有可靠的行为.作为开发人员,当代码在大多数设备上完美运行时,这是非常令人沮丧的,但随后是S5(非常受欢迎的设备),我们看起来非常糟糕.
经过多次努力,我认为我有一个解决方案(更多的解决方法),运作良好.
>将相机设置为FOCUS_MODE_CONTINUOUS_PICTURE
>在用于拍照的手势处理程序(例如按钮点击,触摸事件),将相机切换到FOCUS_MODE_AUTO,然后以延迟方式调用Camera.autoFocus()
这在照片预览期间提供了漂亮的连续对焦UI,但在可靠的自动对焦模式下拍摄照片.
这是代码:
protected void onTakePicture() { // mCamera is the Camera object // mAutoFocusCallback is a Camera.AutoFocusCallback handler try { // determine current focus mode Camera.Parameters params = mCamera.getParameters(); if (params.getFocusMode().equals(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE)) { mCamera.cancelAutoFocus(); // cancels continuous focus List<String> lModes = params.getSupportedFocusModes(); if (lModes != null) { if (lModes.contains(Camera.Parameters.FOCUS_MODE_AUTO)) { params.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO); // auto-focus mode if supported mCamera.setParameters(params); // set parameters on device } } // start an auto-focus after a slight (100ms) delay new Handler().postDelayed(new Runnable() { public void run() { mCamera.autoFocus(mAutoFocusCallback); // auto-focus now } },100); return; } mCamera.autoFocus(mAutoFocusCallback); // do the focus,callback is mAutoFocusCallback } catch (Exception e) { Log.e("myApp",e.getMessage()); } }
请试一试并报告您的结果