SweetCamera主要是为了解决兼容android各种机型的相机自动对焦的问题的项目,这里采用了基于传感器的方案,希望能够帮助您解决自动对焦问题。
详细可以看博客。
Preview:
Core Code
具体原理是根据传感器来判断手机的运动状态,如果手机从静止状态变成运行状态后再次进入静止状态,此时就是手机的对焦时机。 通过传感器方式来触发对焦,可以兼容几乎所有拥有传感器的手机的对焦问题。
if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { int x = (int) event.values[0]; int y = (int) event.values[1]; int z = (int) event.values[2]; mCalendar = Calendar.getInstance(); long stamp = mCalendar.getTimeInMillis(); int second = mCalendar.get(Calendar.SECOND); if (STATUE != STATUS_NONE) { int px = Math.abs(mX - x); int py = Math.abs(mY - y); int pz = Math.abs(mZ - z); double value = Math.sqrt(px * px + py * py + pz * pz); if (value > 1.4) { STATUE = STATUS_MOVE; } else { //上一次状态是move,记录静态时间点 if (STATUE == STATUS_MOVE) { lastStaticStamp = stamp; canFocusIn = true; } if (canFocusIn) { if (stamp - lastStaticStamp > DELEY_DURATION) { //移动后静止一段时间,可以发生对焦行为 if (!isFocusing) { canFocusIn = false; if (mCameraFocusListener != null) { mCameraFocusListener.onFocus(); } } } } STATUE = STATUS_STATIC; } } else { lastStaticStamp = stamp; STATUE = STATUS_STATIC; } mX = x; mY = y; mZ = z; }
End
如果你觉得不错, 对你有帮助, 欢迎点个 fork, star, follow , 也可以帮忙分享给你更多的朋友, 这是给作者最大的动力与支持。

