public final class PlayerMessage
extends java.lang.Object
PlayerMessage.Sender and received by a PlayerMessage.Target.| Modifier and Type | Class and Description |
|---|---|
static interface |
PlayerMessage.Sender
A sender for messages.
|
static interface |
PlayerMessage.Target
A target for messages.
|
| Constructor and Description |
|---|
PlayerMessage(PlayerMessage.Sender sender,
PlayerMessage.Target target,
Timeline timeline,
int defaultWindowIndex,
android.os.Handler defaultHandler)
Creates a new message.
|
| Modifier and Type | Method and Description |
|---|---|
boolean |
blockUntilDelivered()
Blocks until after the message has been delivered or the player is no longer able to deliver
the message.
|
boolean |
getDeleteAfterDelivery()
Returns whether the message will be deleted after delivery.
|
android.os.Handler |
getHandler()
Returns the handler the message is delivered on.
|
java.lang.Object |
getPayload()
Returns the message payload forwarded to
PlayerMessage.Target.handleMessage(int, Object). |
long |
getPositionMs()
Returns position in window at
getWindowIndex() at which the message will be delivered,
in milliseconds. |
PlayerMessage.Target |
getTarget()
Returns the target the message is sent to.
|
Timeline |
getTimeline()
Returns the timeline used for setting the position with
setPosition(long). |
int |
getType()
Returns the message type forwarded to
PlayerMessage.Target.handleMessage(int, Object). |
int |
getWindowIndex()
Returns window index at which the message will be delivered.
|
void |
markAsProcessed(boolean isDelivered)
Marks the message as processed.
|
PlayerMessage |
send()
Sends the message.
|
PlayerMessage |
setDeleteAfterDelivery(boolean deleteAfterDelivery)
Sets whether the message will be deleted after delivery.
|
PlayerMessage |
setHandler(android.os.Handler handler)
Sets the handler the message is delivered on.
|
PlayerMessage |
setPayload(java.lang.Object payload)
Sets the message payload forwarded to
PlayerMessage.Target.handleMessage(int, Object). |
PlayerMessage |
setPosition(int windowIndex,
long positionMs)
Sets a position in a window at which the message will be delivered.
|
PlayerMessage |
setPosition(long positionMs)
Sets a position in the current window at which the message will be delivered.
|
PlayerMessage |
setType(int messageType)
Sets the message type forwarded to
PlayerMessage.Target.handleMessage(int, Object). |
public PlayerMessage(PlayerMessage.Sender sender, PlayerMessage.Target target, Timeline timeline, int defaultWindowIndex, android.os.Handler defaultHandler)
sender - The PlayerMessage.Sender used to send the message.target - The PlayerMessage.Target the message is sent to.timeline - The timeline used when setting the position with setPosition(long). If
set to Timeline.EMPTY, any position can be specified.defaultWindowIndex - The default window index in the timeline when no other window
index is specified.defaultHandler - The default handler to send the message on when no other handler is
specified.public Timeline getTimeline()
setPosition(long).public PlayerMessage.Target getTarget()
public PlayerMessage setType(int messageType)
PlayerMessage.Target.handleMessage(int, Object).messageType - The message type.java.lang.IllegalStateException - If send() has already been called.public int getType()
PlayerMessage.Target.handleMessage(int, Object).public PlayerMessage setPayload(@Nullable java.lang.Object payload)
PlayerMessage.Target.handleMessage(int, Object).payload - The message payload.java.lang.IllegalStateException - If send() has already been called.public java.lang.Object getPayload()
PlayerMessage.Target.handleMessage(int, Object).public PlayerMessage setHandler(android.os.Handler handler)
handler - A Handler.java.lang.IllegalStateException - If send() has already been called.public android.os.Handler getHandler()
public PlayerMessage setPosition(long positionMs)
positionMs - The position in the current window at which the message will be sent, in
milliseconds.java.lang.IllegalStateException - If send() has already been called.public long getPositionMs()
getWindowIndex() at which the message will be delivered,
in milliseconds. If C.TIME_UNSET, the message will be delivered immediately.public PlayerMessage setPosition(int windowIndex, long positionMs)
windowIndex - The index of the window at which the message will be sent.positionMs - The position in the window with index windowIndex at which the
message will be sent, in milliseconds.IllegalSeekPositionException - If the timeline returned by getTimeline() is not
empty and the provided window index is not within the bounds of the timeline.java.lang.IllegalStateException - If send() has already been called.public int getWindowIndex()
public PlayerMessage setDeleteAfterDelivery(boolean deleteAfterDelivery)
setPosition(long).deleteAfterDelivery - Whether the message is deleted after delivery.java.lang.IllegalStateException - If send() has already been called.public boolean getDeleteAfterDelivery()
public PlayerMessage send()
ExoPlaybackException then it is propagated
out of the player as an error using Player.EventListener.onPlayerError(ExoPlaybackException).java.lang.IllegalStateException - If send() has already been called.public boolean blockUntilDelivered()
throws java.lang.InterruptedException
Note that this method can't be called if the current thread is the same thread used by the
message handler set with setHandler(Handler) as it would cause a deadlock.
java.lang.IllegalStateException - If this method is called before send().java.lang.IllegalStateException - If this method is called on the same thread used by the message
handler set with setHandler(Handler).java.lang.InterruptedException - If the current thread is interrupted while waiting for the message
to be delivered.public void markAsProcessed(boolean isDelivered)
PlayerMessage.Sender and may be called
multiple times.isDelivered - Whether the message has been delivered to its target. The message is
considered as being delivered when this method has been called with isDelivered set
to true at least once.