# Class SleepStageInterval

java.lang.Object
com.codename1.health.SleepStageInterval

public final class SleepStageInterval extends Object
A contiguous span of one `SleepStage` inside a `SleepSample`.

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final int`
  `NO_PLATFORM_CODE`
  Returned by `getPlatformCode()` when the port did not record one.

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SleepStageInterval(SleepStageInterval other)`
  A copy of `other`, carrying its platform code.
  `SleepStageInterval(SleepStage stage, long startMillis, long endMillis)`
  Creates a stage interval.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `long`
  `getDurationMillis()`
  The length of this span in milliseconds.
  `long`
  `getEndMillis()`
  Exclusive end, epoch millis UTC.
  `int`
  `getPlatformCode()`
  The raw platform value, or `NO_PLATFORM_CODE`.
  `SleepStage`
  `getStage()`
  The stage this span was classified as.
  `long`
  `getStartMillis()`
  Inclusive start, epoch millis UTC.
  `void`
  `setPlatformCode(int platformCode)`
  Records the platform's own value.
  `String`
  `toString()`
  Returns a string representation of the object.

  ### Methods inherited from class Object

  `clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Field Details

  - ### NO_PLATFORM_CODE

    public static final int NO_PLATFORM_CODE
    Returned by `getPlatformCode()` when the port did not record one.
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### SleepStageInterval

    public SleepStageInterval(SleepStageInterval other)

    A copy of `other`, carrying its platform code.

    Exists because the platform code is mutable, which is what made the shallow list copies visible: `SleepSample.create(long, long)` and `HealthWire.copyOf` copied the list and kept the elements, so a caller holding an interval it had written -- or one handed back by a read -- could change a stored record by setting a code on it, with no write and no persistence. The list being unmodifiable stopped the shape of the session changing and not the contents of its parts.

  - ### SleepStageInterval

    public SleepStageInterval(SleepStage stage, long startMillis, long endMillis)

    Creates a stage interval.

    ###### Throws

    - `IllegalArgumentException`: if `stage` is null or the end precedes the start.

- ## Method Details

  - ### getPlatformCode

    public int getPlatformCode()

    The raw platform value, or `NO_PLATFORM_CODE`.

    `HKCategoryValueSleepAnalysis` on iOS, the Health Connect stage constant on Android. Meaningless across platforms by design: read it only after checking which one you are on.

  - ### setPlatformCode

    public void setPlatformCode(int platformCode)
    Records the platform's own value. Called by ports while reading.

  - ### getStage

    public SleepStage getStage()
    The stage this span was classified as.

  - ### getStartMillis

    public long getStartMillis()
    Inclusive start, epoch millis UTC.

  - ### getEndMillis

    public long getEndMillis()
    Exclusive end, epoch millis UTC.

  - ### getDurationMillis

    public long getDurationMillis()
    The length of this span in milliseconds.

  - ### toString

    public String toString()
    Description copied from class: `Object`
    Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method. The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of: getClass().getName() + '@' + Integer.toHexString(hashCode())
    Overrides:
      `toString` in class `Object`