An implementation of Session
for managing connections to a Cast receiver device. An instance of CastSession
is automatically created by the SessionManager
when the user selects a Cast device from the media route controller dialog. The current
active CastSession
can be accessed by
SessionManager.getCurrentCastSession()
.
See Also
Public Method Summary
void |
addCastListener(Cast.Listener listener)
Adds the
Cast.Listener
for Cast events, such as change of the application status and change of device
volume.
|
int |
getActiveInputState()
Returns the device's active-input state.
|
Cast.ApplicationConnectionResult |
getApplicationConnectionResult()
Returns the
Cast.ApplicationConnectionResult , the result of launching or joining
the receiver application when starting or resuming this session.
|
ApplicationMetadata |
getApplicationMetadata()
Returns the metadata for the currently running receiver application, or
null if the metadata is unavailable.
|
String |
getApplicationStatus()
Returns the current receiver application status, if any.
|
CastDevice |
getCastDevice()
Returns the
CastDevice
this CastSession
is casting to.
|
RemoteMediaClient |
getRemoteMediaClient()
Returns the
RemoteMediaClient for remote media control.
|
long |
getSessionRemainingTimeMs()
Returns the amount of time that this
CastSession
instance should still be considered live by the SDK.
|
int |
getStandbyState()
Returns the device's standby state.
|
double |
getVolume()
Returns the device's volume, in the range [0.0, 1.0].
|
boolean |
isMute()
Returns the device's mute state.
|
void |
removeCastListener(Cast.Listener listener)
Removes the
Cast.Listener .
|
void |
removeMessageReceivedCallbacks(String namespace)
Removes the
Cast.MessageReceivedCallback from this session for a given
namespace.
|
void |
requestStatus()
Requests the latest status from the device.
|
PendingResult<Status> |
sendMessage(String namespace,
String
message)
Sends a message to the currently connected application.
|
void |
setMessageReceivedCallbacks(String namespace,
Cast.MessageReceivedCallback callbacks)
Sets the new
Cast.MessageReceivedCallback listener on this session for a given
namespace.
|
void |
setMute(boolean mute)
Mutes or unmutes the device's audio.
|
void |
setVolume(double volume)
Sets the device volume.
|
Protected Method Summary
void |
end(boolean stopCasting)
Ends the
CastSession .
|
void | |
void | |
void | |
void |
Inherited Method Summary
Public Methods
public void addCastListener (Cast.Listener listener)
Adds the Cast.Listener
for Cast events, such as change of the application status and change of device
volume.
Throws
IllegalStateException | If this method is not called on the main thread. |
---|
public int getActiveInputState ()
Returns the device's active-input state. The returned value is Cast.ACTIVE_INPUT_STATE_YES
,
Cast.ACTIVE_INPUT_STATE_NO
,
or Cast.ACTIVE_INPUT_STATE_UNKNOWN
.
Throws
IllegalStateException | If there is no active service connection. |
---|---|
IllegalStateException | If this method is not called on the main thread. |
public Cast.ApplicationConnectionResult getApplicationConnectionResult ()
Returns the Cast.ApplicationConnectionResult
,
the result of launching or joining the receiver application when starting or resuming
this session. Returns null
if the session is not launched or joined
yet.
Throws
IllegalStateException | If this method is not called on the main thread. |
---|
public ApplicationMetadata getApplicationMetadata ()
Returns the metadata for the currently running receiver application, or
null
if the metadata is unavailable.
Throws
IllegalStateException | If there is no active service connection. |
---|---|
IllegalStateException | If this method is not called on the main thread. |
public String getApplicationStatus ()
Returns the current receiver application status, if any. Message text is localized to the Google Cast device's locale.
Throws
IllegalStateException | If there is no active service connection. |
---|---|
IllegalStateException | If this method is not called on the main thread. |
public CastDevice getCastDevice ()
Returns the CastDevice
this CastSession
is casting to.
Throws
IllegalStateException | If this method is not called on the main thread. |
---|
public RemoteMediaClient getRemoteMediaClient ()
Returns the
RemoteMediaClient
for remote media control.
Throws
IllegalStateException | If this method is not called on the main thread. |
---|
public long getSessionRemainingTimeMs ()
Returns the amount of time that this CastSession
instance should still be considered live by the SDK. This method should be called only
by the SDK.
Throws
IllegalStateException | If this method is not called on the main thread. |
---|
public int getStandbyState ()
Returns the device's standby state. The returned value is Cast.STANDBY_STATE_UNKNOWN
,
Cast.STANDBY_STATE_NO
,
or Cast.STANDBY_STATE_YES
.
Throws
IllegalStateException | If there is no active service connection. |
---|---|
IllegalStateException | If this method is not called on the main thread. |
public double getVolume ()
Returns the device's volume, in the range [0.0, 1.0].
Throws
IllegalStateException | If there is no active service connection. |
---|---|
IllegalStateException | If this method is not called on the main thread. |
public boolean isMute ()
Returns the device's mute state.
Throws
IllegalStateException | If there is no active service connection. |
---|---|
IllegalStateException | If this method is not called on the main thread. |
public void removeCastListener (Cast.Listener listener)
Removes the Cast.Listener
.
Throws
IllegalStateException | If this method is not called on the main thread. |
---|
public void removeMessageReceivedCallbacks (String namespace)
Removes the Cast.MessageReceivedCallback
from this session for a given namespace.
Parameters
namespace | The namespace of the Cast channel. Namespaces must begin with the prefix "
urn:x-cast: ". |
---|
Throws
IOException | If an I/O error occurs while performing the request. |
---|---|
IllegalArgumentException | If namespace is null or empty. |
IllegalStateException | If this method is not called on the main thread. |
public void requestStatus ()
Requests the latest status from the device.
Throws
IllegalStateException | If there is no active service connection. |
---|---|
IllegalStateException | If this method is not called on the main thread. |
IOException |
public PendingResult<Status> sendMessage (String namespace, String message)
Sends a message to the currently connected application.
Parameters
namespace | The namespace for the message. Namespaces must begin with the prefix "
urn:x-cast: ". |
---|---|
message | The message payload. |
Returns
- A
PendingResult
which can be used to see whether the message has been enqueued to be sent to a Google Cast device, ornull
if the session is not connected.
Throws
IllegalStateException | If this method is not called on the main thread. |
---|
public void setMessageReceivedCallbacks (String namespace, Cast.MessageReceivedCallback callbacks)
Sets the new Cast.MessageReceivedCallback
listener on this session for a given namespace. The new listener will replace an
existing listener for a given namespace
. Messages received by the session
for the given namespace
will be forwarded to this listener.
Parameters
namespace | The namespace of the Cast channel. Namespaces must begin with the prefix "
urn:x-cast: ". |
---|---|
callbacks | The Cast.MessageReceivedCallback
to perform callbacks on. May not be null . |
Throws
IOException | If an I/O error occurs while performing the request. |
---|---|
IllegalStateException | If there is no active service connection. |
IllegalArgumentException | If namespace is null or empty, or if the
namespace doesn't start with the prefix
"urn:x-cast: ". |
IllegalStateException | If this method is not called on the main thread. |
public void setMute (boolean mute)
Mutes or unmutes the device's audio.
Throws
IOException | If an I/O error occurs while performing the request. |
---|---|
IllegalStateException | If there is no active service connection. |
IllegalStateException | If this method is not called on the main thread. |
public void setVolume (double volume)
Sets the device volume. If volume
is outside of the range [0.0, 1.0],
then the value will be clipped.
Throws
IOException | If an I/O error occurs while performing the request. |
---|---|
IllegalStateException | If this method is not called on the main thread. |
Protected Methods
protected void end (boolean stopCasting)
Ends the CastSession
.
This method is called only by the SDK.
Parameters
stopCasting | Should the receiver app be stopped when the current session ends. |
---|
protected void onResuming (Bundle routeInfoExtra)
This method is called prior to
resume(Bundle)
. Subclass should override this method to do necessary setup.
The default implementation does nothing.
Parameters
routeInfoExtra | the extra field of the selected media route and it can be obtained by
MediaRouter.RouteInfo.getExtras() |
---|
protected void onStarting (Bundle routeInfoExtra)
This method is called prior to
start(Bundle)
. Subclass should override this method to do necessary setup.
The default implementation does nothing.
Parameters
routeInfoExtra | the extra field of the selected media route and it can be obtained by
MediaRouter.RouteInfo.getExtras() |
---|
protected void resume (Bundle routeInfoExtra)
Resumes the CastSession
.
This method is called only by the SDK.
Parameters
routeInfoExtra | The extra field in the MediaRouter.RouteInfo . |
---|
protected void start (Bundle routeInfoExtra)
Starts the CastSession
.
This method is called only by the SDK.
Parameters
routeInfoExtra | The extra field in the MediaRouter.RouteInfo . |
---|