Package com.google.android.exoplayer2.offline

## Class StreamKey

- java.lang.Object
- - com.google.android.exoplayer2.offline.StreamKey

- All Implemented Interfaces:
    `Parcelable`, `Comparable<StreamKey>`

      public final class StreamKey
      extends Object
      implements Comparable<StreamKey>, Parcelable

  A key for a subset of media that can be separately loaded (a "stream").

  The stream key consists of a period index, a group index within the period and a stream index within the group. The interpretation of these indices depends on the type of media for which the stream key is used. Note that they are not the same as track group and track indices, because multiple tracks can be multiplexed into a single stream.

  Application code should not generally attempt to build StreamKey instances directly. Instead, `DownloadHelper.getDownloadRequest` can be used to generate download requests with the correct StreamKeys for the track selections that have been configured on the helper. `MediaPeriod.getStreamKeys` provides a lower level way of generating StreamKeys corresponding to a particular track selection.

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface android.os.Parcelable

      `Parcelable.ClassLoaderCreator<T extends Object>, Parcelable.Creator<T extends Object>`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static Parcelable.Creator<StreamKey>` | `CREATOR` |
    `int` | `groupIndex` | The group index.
    `int` | `periodIndex` | The period index.
    `int` | `streamIndex` | The stream index.
    `int` | `trackIndex` | Deprecated. Use `streamIndex`.

    - ### Fields inherited from interface android.os.Parcelable

      `CONTENTS_FILE_DESCRIPTOR, PARCELABLE_WRITE_RETURN_VALUE`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `StreamKey​(int groupIndex, int streamIndex)` | Creates an instance with `periodIndex` set to 0.
    `StreamKey​(int periodIndex, int groupIndex, int streamIndex)` | Creates an instance.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `int` | `compareTo​(StreamKey o)` |
    `int` | `describeContents()` |
    `boolean` | `equals​(Object o)` |
    `int` | `hashCode()` |
    `String` | `toString()` |
    `void` | `writeToParcel​(Parcel dest, int flags)` |

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### periodIndex

          public final int periodIndex

      The period index.

    - #### groupIndex

          public final int groupIndex

      The group index.

    - #### streamIndex

          public final int streamIndex

      The stream index.

    - #### trackIndex

          @Deprecated
          public final int trackIndex

      Deprecated.
      Use `streamIndex`.

    - #### CREATOR

          public static final Parcelable.Creator<StreamKey> CREATOR

  - ### Constructor Detail

    - #### StreamKey

          public StreamKey​(int groupIndex,
                           int streamIndex)

      Creates an instance with `periodIndex` set to 0.
      Parameters:
        `groupIndex` - The group index.
        `streamIndex` - The stream index.

    - #### StreamKey

          public StreamKey​(int periodIndex,
                           int groupIndex,
                           int streamIndex)

      Creates an instance.
      Parameters:
        `periodIndex` - The period index.
        `groupIndex` - The group index.
        `streamIndex` - The stream index.

  - ### Method Detail

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### equals

          public boolean equals​(@Nullable
                                Object o)

      Overrides:
        `equals` in class `Object`

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`

    - #### compareTo

          public int compareTo​(StreamKey o)

      Specified by:
        `compareTo` in interface `Comparable<StreamKey>`

    - #### describeContents

          public int describeContents()

      Specified by:
        `describeContents` in interface `Parcelable`

    - #### writeToParcel

          public void writeToParcel​(Parcel dest,
                                    int flags)

      Specified by:
        `writeToParcel` in interface `Parcelable`