# Interface AsyncMedia

All Superinterfaces:
  `Media`

All Known Implementing Classes:
  `AbstractMedia`

public interface AsyncMedia extends Media

An interface for media elements that provides asynchronous pause and play functionality as well as support for state change events, so that interested parties can register to be notified when state changes between play and pause.

You can convert any `Media` object into an AsyncMedia object using `MediaManager#getAsyncMedia(com.codename1.media.Media)`. In most cases this just casts the object to AsyncMedia, since most media returned from `MediaManager` already implement this interface. In cases where the media doesn't already implement AsyncMedia, it will return an Async wrapper around the media.

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Interface
  Description
  `static class`
  `AsyncMedia.MediaErrorEvent`
  Encapsulates a media error event.
  `static enum`
  `AsyncMedia.MediaErrorType`
  Enum encapsulating the different types of media errors that can occur.
  `static class`
  `AsyncMedia.MediaException`
  Encapsulates a media exception.
  `static class`
  `AsyncMedia.MediaStateChangeEvent`
  Encapsulates a state-change event on a Media object.
  `static class`
  `AsyncMedia.PauseRequest`
  An async resource used to track the progress of a pauseAsync() request.
  `static class`
  `AsyncMedia.PlayRequest`
  An async resource used to track the progress of a playAsync() request.
  `static enum`
  `AsyncMedia.State`
  An enum to represent the state of a media object.

- ## Field Summary

  ### Fields inherited from interface Media

  `VARIABLE_ANDROID_SEEK_PREVIEW_WORKAROUND, VARIABLE_BACKGROUND_ALBUM_COVER, VARIABLE_BACKGROUND_ARTIST, VARIABLE_BACKGROUND_DURATION, VARIABLE_BACKGROUND_POSITION, VARIABLE_BACKGROUND_SUPPORTED, VARIABLE_BACKGROUND_TITLE, VARIABLE_NATIVE_CONTRLOLS_EMBEDDED`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `addMediaCompletionHandler(Runnable onComplete)`
  Adds a callback to be run when the media has played to completion.
  `void`
  `addMediaErrorListener(ActionListener<AsyncMedia.MediaErrorEvent> l)`
  Adds a listener to be notified when an error occurs in the media.
  `void`
  `addMediaStateChangeListener(ActionListener<AsyncMedia.MediaStateChangeEvent> l)`
  Adds a listener to be notified when the state of the media changes.
  `AsyncMedia.State`
  `getState()`
  Gets the current state of the media object.
  `AsyncMedia.PauseRequest`
  `pauseAsync()`
  Initiates a pause request.
  `AsyncMedia.PlayRequest`
  `playAsync()`
  Initiates a play request.
  `void`
  `removeMediaErrorListener(ActionListener<AsyncMedia.MediaErrorEvent> l)`
  Removes a listener so that it will no longer be notified of errors.
  `void`
  `removeMediaStateChangeListener(ActionListener<AsyncMedia.MediaStateChangeEvent> l)`
  Removes a listener so that it will no longer be notified of state changes.

  ### Methods inherited from interface Media

  `cleanup, getDuration, getTime, getVariable, getVideoComponent, getVolume, isFullScreen, isNativePlayerMode, isPlaying, isVideo, pause, play, prepare, setFullScreen, setNativePlayerMode, setTime, setVariable, setVolume`

- ## Method Details

  - ### getState

    AsyncMedia.State getState()

    Gets the current state of the media object.

    ###### Returns

    The state of the media object.

  - ### addMediaStateChangeListener

    void addMediaStateChangeListener(ActionListener<AsyncMedia.MediaStateChangeEvent> l)

    Adds a listener to be notified when the state of the media changes.

    ###### Parameters

    - `l`: Listener

  - ### removeMediaStateChangeListener

    void removeMediaStateChangeListener(ActionListener<AsyncMedia.MediaStateChangeEvent> l)

    Removes a listener so that it will no longer be notified of state changes.

    ###### Parameters

    - `l`: Listener

  - ### addMediaErrorListener

    void addMediaErrorListener(ActionListener<AsyncMedia.MediaErrorEvent> l)

    Adds a listener to be notified when an error occurs in the media.

    ###### Parameters

    - `l`: Listener

  - ### removeMediaErrorListener

    void removeMediaErrorListener(ActionListener<AsyncMedia.MediaErrorEvent> l)

    Removes a listener so that it will no longer be notified of errors.

    ###### Parameters

    - `l`: Listener

  - ### addMediaCompletionHandler

    void addMediaCompletionHandler(Runnable onComplete)

    Adds a callback to be run when the media has played to completion.

    ###### Parameters

    - `onComplete`

  - ### playAsync

    AsyncMedia.PlayRequest playAsync()
    Initiates a play request. Returns immediately without blocking. Caller can use the returned PlayRequest object to be notified when playing has actually started.

  - ### pauseAsync

    AsyncMedia.PauseRequest pauseAsync()
    Initiates a pause request. Returns immediately without blocking. Caller can use the returned PauseRequest object to be notified when media has actually paused.