pull/165/merge
Nick Hope 8 years ago committed by GitHub
commit 0199f16b01
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 7
      cameraview/src/main/java/com/otaliastudios/cameraview/Camera1.java

@ -30,12 +30,17 @@ class Camera1 extends CameraController implements Camera.PreviewCallback, Camera
private Camera mCamera; private Camera mCamera;
private boolean mIsBound = false; private boolean mIsBound = false;
private boolean mDelayRunnable = false;
private final int mPostFocusResetDelay = 3000; private final int mPostFocusResetDelay = 3000;
private Runnable mPostFocusResetRunnable = new Runnable() { private Runnable mPostFocusResetRunnable = new Runnable() {
@Override @Override
public void run() { public void run() {
if (!isCameraAvailable()) return; if (!isCameraAvailable()) return;
if (mDelayRunnable) {
mDelayRunnable = false; // Delay focus further - fixes Samsung devices
return;
}
mCamera.cancelAutoFocus(); mCamera.cancelAutoFocus();
Camera.Parameters params = mCamera.getParameters(); Camera.Parameters params = mCamera.getParameters();
int maxAF = params.getMaxNumFocusAreas(); int maxAF = params.getMaxNumFocusAreas();
@ -497,6 +502,7 @@ class Camera1 extends CameraController implements Camera.PreviewCallback, Camera
if (mIsCapturingVideo && !mCameraOptions.isVideoSnapshotSupported()) return; if (mIsCapturingVideo && !mCameraOptions.isVideoSnapshotSupported()) return;
mIsCapturingImage = true; mIsCapturingImage = true;
mDelayRunnable = true; // delaying focus (fixes crash on samsung)
final int sensorToOutput = computeSensorToOutputOffset(); final int sensorToOutput = computeSensorToOutputOffset();
final int sensorToView = computeSensorToViewOffset(); final int sensorToView = computeSensorToViewOffset();
final boolean outputMatchesView = (sensorToOutput + sensorToView + 180) % 180 == 0; final boolean outputMatchesView = (sensorToOutput + sensorToView + 180) % 180 == 0;
@ -806,6 +812,7 @@ class Camera1 extends CameraController implements Camera.PreviewCallback, Camera
mCamera.setParameters(params); mCamera.setParameters(params);
mCameraCallbacks.dispatchOnFocusStart(gesture, p); mCameraCallbacks.dispatchOnFocusStart(gesture, p);
// TODO this is not guaranteed to be called... Fix. // TODO this is not guaranteed to be called... Fix.
// TODO Updated: Kind of fixed with mDelayRunnable on image capture
mCamera.autoFocus(new Camera.AutoFocusCallback() { mCamera.autoFocus(new Camera.AutoFocusCallback() {
@Override @Override
public void onAutoFocus(boolean success, Camera camera) { public void onAutoFocus(boolean success, Camera camera) {

Loading…
Cancel
Save