blob: 67e05499d47af68927b135db7cddfbb08e209038 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package io.flutter.plugins.camera.types;
import android.os.SystemClock;
/**
* This is a simple class for managing a timeout. In the camera we generally keep two timeouts: one
* for focusing and one for pre-capture metering.
*
* <p>We use timeouts to ensure a picture is always captured within a reasonable amount of time even
* if the settings don't converge and focus can't be locked.
*
* <p>You generally check the status of the timeout in the CameraCaptureCallback during the capture
* sequence and use it to move to the next state if the timeout has passed.
*/
public class Timeout {
/** The timeout time in milliseconds */
private final long timeoutMs;
/** When this timeout was started. Will be used later to check if the timeout has expired yet. */
private final long timeStarted;
/**
* Factory method to create a new Timeout.
*
* @param timeoutMs timeout to use.
* @return returns a new Timeout.
*/
public static Timeout create(long timeoutMs) {
return new Timeout(timeoutMs);
}
/**
* Create a new timeout.
*
* @param timeoutMs the time in milliseconds for this timeout to lapse.
*/
private Timeout(long timeoutMs) {
this.timeoutMs = timeoutMs;
this.timeStarted = SystemClock.elapsedRealtime();
}
/** Will return true when the timeout period has lapsed. */
public boolean getIsExpired() {
return (SystemClock.elapsedRealtime() - timeStarted) > timeoutMs;
}
}