Added in API level 37

TimeDifference


class TimeDifference : Notification.Metric.MetricValue
kotlin.Any
   ↳ android.app.Notification.Metric.MetricValue
   ↳ android.app.Notification.Metric.TimeDifference

This represents a timer, a stopwatch, or a countdown to an event.

When representing a running timer (or stopwatch, etc), this value specifies a reference instant for when that timer will hit zero (or the stopwatch was at zero, respectively), called the "zero time". In this case the time displayed is defined as the difference between the "zero time" and the current time, meaning it will show a live-updated timer.

The zero time can be specified as an Instant (in which case it corresponds to a "real-world" point in time, from InstantSource.system), or as milliseconds since boot (from SystemClock.elapsedRealtime()). The latter might be suitable when the timer is tied to an AlarmManager.ELAPSED_REALTIME alarm in AlarmManager.

When representing a paused timer (or stopwatch, etc), this value specifies the duration as a fixed value.

This value can also specify its formatting, whether as a "chronometer" (e.g. 43:21) or an adaptive time (e.g. 1h 43m).

Summary

Constants
static Int

Formatting option: adaptive (e.g. 1h 5m; 15m; 1m 30s; 5s).

static Int

Formatting option: chronometer-style, (e.g. two hours = "2:00:00").

Public methods
Boolean
equals(other: Any?)

Indicates whether some other object is "equal to" this one.

static Notification.Metric.TimeDifference
forPausedStopwatch(elapsedTime: Duration, format: Int)

Creates a "paused stopwatch" metric, showing the elapsedTime.

static Notification.Metric.TimeDifference
forPausedTimer(remainingTime: Duration, format: Int)

Creates a "paused timer" metric, showing the remainingTime.

static Notification.Metric.TimeDifference
forStopwatch(startTime: Instant, format: Int)

Creates a "running stopwatch" metric, which will show the time elapsed since startTime.

static Notification.Metric.TimeDifference
forStopwatch(startTime: Long, format: Int)

Creates a "running stopwatch" metric, which will show the time elapsed since startTime, specified in the SystemClock.elapsedRealtime() frame of reference.

static Notification.Metric.TimeDifference
forTimer(endTime: Instant, format: Int)

Creates a "running timer" metric, which will show a countdown to endTime.

static Notification.Metric.TimeDifference
forTimer(endTime: Long, format: Int)

Creates a "running timer" metric, which will show a countdown to endTime, specified in the SystemClock.elapsedRealtime() frame of reference.

Int

Formatting option for the timer/stopwatch.

Duration?

The fixed time difference, for a paused timer or stopwatch.

Long?

The elapsed realtime at which the time difference is zero.

Instant?

The Instant at which the time difference is zero.

Int

Returns a hash code value for the object.

Boolean

Whether this TimeDifference value represents a stopwatch -- when running, it counts up from getZeroTime() (or getZeroElapsedRealtime()).

Boolean

Whether this TimeDifference value represents a timer -- when running, it counts down to getZeroTime() (or getZeroElapsedRealtime()).

String

Returns a string representation of the object.

Constants

FORMAT_ADAPTIVE

Added in API level 37
static val FORMAT_ADAPTIVE: Int

Formatting option: adaptive (e.g. 1h 5m; 15m; 1m 30s; 5s).

Value: 1

FORMAT_CHRONOMETER

Added in API level 37
static val FORMAT_CHRONOMETER: Int

Formatting option: chronometer-style, (e.g. two hours = "2:00:00").

Value: 2

Public methods

equals

Added in API level 37
fun equals(other: Any?): Boolean

Indicates whether some other object is "equal to" this one.

The equals method implements an equivalence relation on non-null object references:

  • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
  • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
  • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
  • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
  • For any non-null reference value x, x.equals(null) should return false.

An equivalence relation partitions the elements it operates on into equivalence classes; all the members of an equivalence class are equal to each other. Members of an equivalence class are substitutable for each other, at least for some purposes.

Parameters
obj the reference object with which to compare.
Return
Boolean true if this object is the same as the obj argument; false otherwise.

forPausedStopwatch

Added in API level 37
static fun forPausedStopwatch(
    elapsedTime: Duration,
    format: Int
): Notification.Metric.TimeDifference

Creates a "paused stopwatch" metric, showing the elapsedTime.

Parameters
elapsedTime Duration: This value cannot be null.
format Int: Value is one of the following:
Return
Notification.Metric.TimeDifference This value cannot be null.

forPausedTimer

Added in API level 37
static fun forPausedTimer(
    remainingTime: Duration,
    format: Int
): Notification.Metric.TimeDifference

Creates a "paused timer" metric, showing the remainingTime.

Parameters
remainingTime Duration: This value cannot be null.
format Int: Value is one of the following:
Return
Notification.Metric.TimeDifference This value cannot be null.

forStopwatch

Added in API level 37
static fun forStopwatch(
    startTime: Instant,
    format: Int
): Notification.Metric.TimeDifference

Creates a "running stopwatch" metric, which will show the time elapsed since startTime.

Parameters
startTime Instant: instant at which the stopwatch started.
This value cannot be null.
format Int: Value is one of the following:
Return
Notification.Metric.TimeDifference This value cannot be null.

forStopwatch

Added in API level 37
static fun forStopwatch(
    startTime: Long,
    format: Int
): Notification.Metric.TimeDifference

Creates a "running stopwatch" metric, which will show the time elapsed since startTime, specified in the SystemClock.elapsedRealtime() frame of reference.

Parameters
startTime Long: elapsed realtime at which the stopwatch started.
Value is a non-negative timestamp in the android.os.SystemClock#elapsedRealtime() time base.
format Int: Value is one of the following:
Return
Notification.Metric.TimeDifference This value cannot be null.

forTimer

Added in API level 37
static fun forTimer(
    endTime: Instant,
    format: Int
): Notification.Metric.TimeDifference

Creates a "running timer" metric, which will show a countdown to endTime.

Parameters
endTime Instant: instant at which the timer reaches zero.
This value cannot be null.
format Int: Value is one of the following:
Return
Notification.Metric.TimeDifference This value cannot be null.

forTimer

Added in API level 37
static fun forTimer(
    endTime: Long,
    format: Int
): Notification.Metric.TimeDifference

Creates a "running timer" metric, which will show a countdown to endTime, specified in the SystemClock.elapsedRealtime() frame of reference.

Parameters
endTime Long: elapsed realtime at which the timer reaches zero.
Value is a non-negative timestamp in the android.os.SystemClock#elapsedRealtime() time base.
format Int: Value is one of the following:
Return
Notification.Metric.TimeDifference This value cannot be null.

getFormat

Added in API level 37
fun getFormat(): Int

Formatting option for the timer/stopwatch.

Return
Int Value is one of the following:

getPausedDuration

Added in API level 37
fun getPausedDuration(): Duration?

The fixed time difference, for a paused timer or stopwatch.

  • For a paused timer this is the remainingTime supplied to forPausedTimer.
  • For a paused stopwatch this is the elapsedTime supplied to forPausedStopwatch.
  • For running timers or stopwatches this is null.

getZeroElapsedRealtime

Added in API level 37
fun getZeroElapsedRealtime(): Long?

The elapsed realtime at which the time difference is zero. Only valid for an SystemClock.elapsedRealtime()-based TimeDifference.

  • For a running timer this is the endTime supplied to forTimer(long,int).
  • For a running stopwatch this is the startTime supplied to forStopwatch(long,int).
  • For running timers or stopwatches based on Instant (as well as paused timers and stopwatches), this is null.
.
Value is a non-negative timestamp in the android.os.SystemClock#elapsedRealtime() time base.

Return
Long? Value is a non-negative timestamp in the android.os.SystemClock#elapsedRealtime() time base.

getZeroTime

Added in API level 37
fun getZeroTime(): Instant?

The Instant at which the time difference is zero. Only valid for an Instant-based TimeDifference.

  • For a running timer this is the endTime supplied to forTimer(Instant,int).
  • For a running stopwatch this is the startTime supplied to forStopwatch(Instant,int).
  • For running timers or stopwatches based on elapsed realtime (as well as paused timers and stopwatches), this is null.

hashCode

Added in API level 37
fun hashCode(): Int

Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by java.util.HashMap.

The general contract of hashCode is:

  • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
  • If two objects are equal according to the equals method, then calling the hashCode method on each of the two objects must produce the same integer result.
  • It is not required that if two objects are unequal according to the equals method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.
Return
Int a hash code value for this object.

isStopwatch

Added in API level 37
fun isStopwatch(): Boolean

Whether this TimeDifference value represents a stopwatch -- when running, it counts up from getZeroTime() (or getZeroElapsedRealtime()).

isTimer

Added in API level 37
fun isTimer(): Boolean

Whether this TimeDifference value represents a timer -- when running, it counts down to getZeroTime() (or getZeroElapsedRealtime()).

toString

Added in API level 37
fun toString(): String

Returns a string representation of the object.

Return
String a string representation of the object.