Package com.google.android.exoplayer2.source

## Class TrackGroupArray

- java.lang.Object
- - com.google.android.exoplayer2.source.TrackGroupArray

- All Implemented Interfaces:
    `Bundleable`

      public final class TrackGroupArray
      extends Object
      implements Bundleable

  An immutable array of `TrackGroup`s.

  This class is typically used to represent all of the tracks available in a piece of media. Tracks that are known to present the same content are grouped together (e.g., the same video feed provided at different resolutions in an adaptive stream). Tracks that are known to present different content are in separate track groups (e.g., an audio track will not be in the same group as a video track, and an audio track in one language will be in a different group to an audio track in another language).

- - ### Nested Class Summary

    - ### Nested classes/interfaces inherited from interface com.google.android.exoplayer2.Bundleable

      `Bundleable.Creator<T extends Bundleable>`

  - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static Bundleable.Creator<TrackGroupArray>` | `CREATOR` | Object that can restores a TrackGroupArray from a `Bundle`.
    `static TrackGroupArray` | `EMPTY` | The empty array.
    `int` | `length` | The number of groups in the array.

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `TrackGroupArray​(TrackGroup... trackGroups)` | Construct a `TrackGroupArray` from an array of `TrackGroups`.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `equals​(Object obj)` |
    `TrackGroup` | `get​(int index)` | Returns the group at a given index.
    `int` | `hashCode()` |
    `int` | `indexOf​(TrackGroup group)` | Returns the index of a group within the array.
    `boolean` | `isEmpty()` | Returns whether this track group array is empty.
    `Bundle` | `toBundle()` | Returns a `Bundle` representing the information stored in this object.

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

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

- - ### Field Detail

    - #### EMPTY

          public static final TrackGroupArray EMPTY

      The empty array.

    - #### length

          public final int length

      The number of groups in the array. Greater than or equal to zero.

    - #### CREATOR

          public static final Bundleable.Creator<TrackGroupArray> CREATOR

      Object that can restores a TrackGroupArray from a `Bundle`.

  - ### Constructor Detail

    - #### TrackGroupArray

          public TrackGroupArray​(TrackGroup... trackGroups)

      Construct a `TrackGroupArray` from an array of `TrackGroups`.

      The groups must not contain duplicates.

  - ### Method Detail

    - #### get

          public TrackGroup get​(int index)

      Returns the group at a given index.
      Parameters:
        `index` - The index of the group.
      Returns:
        The group.

    - #### indexOf

          public int indexOf​(TrackGroup group)

      Returns the index of a group within the array.
      Parameters:
        `group` - The group.
      Returns:
        The index of the group, or `C.INDEX_UNSET` if no such group exists.

    - #### isEmpty

          public boolean isEmpty()

      Returns whether this track group array is empty.

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`

    - #### equals

          public boolean equals​(@Nullable
                                Object obj)

      Overrides:
        `equals` in class `Object`

    - #### toBundle

          public Bundle toBundle()

      Description copied from interface: `Bundleable`
      Returns a `Bundle` representing the information stored in this object.
      Specified by:
        `toBundle` in interface `Bundleable`