1214e9f90ba8a156b0bdbaff7fc911ffaf3e5b137Sam Juddpackage com.bumptech.glide.util;
2214e9f90ba8a156b0bdbaff7fc911ffaf3e5b137Sam Judd
3214e9f90ba8a156b0bdbaff7fc911ffaf3e5b137Sam Juddimport android.annotation.TargetApi;
4214e9f90ba8a156b0bdbaff7fc911ffaf3e5b137Sam Juddimport android.os.Build;
5214e9f90ba8a156b0bdbaff7fc911ffaf3e5b137Sam Juddimport android.os.SystemClock;
6214e9f90ba8a156b0bdbaff7fc911ffaf3e5b137Sam Judd
75f4610b54d517be58105bcf73ce3291ba79f9f40Sam Judd/**
85f4610b54d517be58105bcf73ce3291ba79f9f40Sam Judd * A class for logging elapsed real time in millis.
95f4610b54d517be58105bcf73ce3291ba79f9f40Sam Judd */
105ba19a0e69ad3a651b8f13ba45de48a56b56ce36Sam Juddpublic final class LogTime {
11e7319b67364bd0ac6306bc7470a43d4a31600c1aRobert Papp    private static final double MILLIS_MULTIPLIER =
125ba19a0e69ad3a651b8f13ba45de48a56b56ce36Sam Judd            Build.VERSION_CODES.JELLY_BEAN_MR1 <= Build.VERSION.SDK_INT ? 1d / Math.pow(10, 6) : 1d;
135ba19a0e69ad3a651b8f13ba45de48a56b56ce36Sam Judd
145ba19a0e69ad3a651b8f13ba45de48a56b56ce36Sam Judd    private LogTime() {
155ba19a0e69ad3a651b8f13ba45de48a56b56ce36Sam Judd        // Utility class.
165ba19a0e69ad3a651b8f13ba45de48a56b56ce36Sam Judd    }
17214e9f90ba8a156b0bdbaff7fc911ffaf3e5b137Sam Judd
185f4610b54d517be58105bcf73ce3291ba79f9f40Sam Judd    /**
195f4610b54d517be58105bcf73ce3291ba79f9f40Sam Judd     * Returns the current time in either millis or nanos depending on the api level to be used with
205f4610b54d517be58105bcf73ce3291ba79f9f40Sam Judd     * {@link #getElapsedMillis(long)}.
215f4610b54d517be58105bcf73ce3291ba79f9f40Sam Judd     */
22e7319b67364bd0ac6306bc7470a43d4a31600c1aRobert Papp    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
23214e9f90ba8a156b0bdbaff7fc911ffaf3e5b137Sam Judd    public static long getLogTime() {
24e7319b67364bd0ac6306bc7470a43d4a31600c1aRobert Papp        if (Build.VERSION_CODES.JELLY_BEAN_MR1 <= Build.VERSION.SDK_INT) {
25214e9f90ba8a156b0bdbaff7fc911ffaf3e5b137Sam Judd            return SystemClock.elapsedRealtimeNanos();
26214e9f90ba8a156b0bdbaff7fc911ffaf3e5b137Sam Judd        } else {
275f4610b54d517be58105bcf73ce3291ba79f9f40Sam Judd            return System.currentTimeMillis();
28214e9f90ba8a156b0bdbaff7fc911ffaf3e5b137Sam Judd        }
29214e9f90ba8a156b0bdbaff7fc911ffaf3e5b137Sam Judd    }
30214e9f90ba8a156b0bdbaff7fc911ffaf3e5b137Sam Judd
315f4610b54d517be58105bcf73ce3291ba79f9f40Sam Judd    /**
325f4610b54d517be58105bcf73ce3291ba79f9f40Sam Judd     * Returns the time elapsed since the given logTime in millis.
335f4610b54d517be58105bcf73ce3291ba79f9f40Sam Judd     *
345f4610b54d517be58105bcf73ce3291ba79f9f40Sam Judd     * @param logTime The start time of the event.
355f4610b54d517be58105bcf73ce3291ba79f9f40Sam Judd     */
36214e9f90ba8a156b0bdbaff7fc911ffaf3e5b137Sam Judd    public static double getElapsedMillis(long logTime) {
37214e9f90ba8a156b0bdbaff7fc911ffaf3e5b137Sam Judd        return (getLogTime() - logTime) * MILLIS_MULTIPLIER;
38214e9f90ba8a156b0bdbaff7fc911ffaf3e5b137Sam Judd    }
39214e9f90ba8a156b0bdbaff7fc911ffaf3e5b137Sam Judd}
40