A singleton class containing global context for the Cast SDK. The shared instance can be
accessed by calling getSharedInstance(Context)
. To properly initialize CastContext
,
the application must have a class that implements OptionsProvider
interface:
package com.example.app; public class CastOptionsProvider implements OptionsProvider { @Override public CastOptions getCastOptions(Context appContext) { ... } }
AndroidManifest.xml
with the
key OPTIONS_PROVIDER_CLASS_NAME_KEY
: ... <meta-data android:name="com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME" android:value="com.example.app.CastOptionsProvider" /> ...
Constant Summary
String | OPTIONS_PROVIDER_CLASS_NAME_KEY | The metadata key to specify the fully qualified
name of the OptionsProvider
implementation in the AndroidManifest.xml
. |
Public Method Summary
void | addAppVisibilityListener
( AppVisibilityListener
listener)
This method is deprecated. Don't use the SDK to listen to app visibility
changes. Use alternative ways for watching activity lifecycle changes such as
by overriding
Activity
lifecycle change methods, or by using Application.ActivityLifecycleCallbacks
. This deprecated method is
now a no-op and will be removed in the next version.
|
void | |
void | |
CastOptions | |
int | getCastReasonCodeForCastStatusCode
(int castStatusCode)
|
int | |
MediaNotificationManager | |
MediaRouteSelector | getMergedSelector
()
Returns the merged
MediaRouteSelector
used for discovering devices and deciding whether to show the MediaRouteButton. |
PrecacheManager | |
SessionManager | |
static CastContext | |
static CastContext | |
static Task< CastContext > | getSharedInstance
( Context
context, Executor
executor)
Returns an asynchronous Task API
call on the shared
instance of
CastContext
,
which will not block the caller thread. |
boolean | isAppVisible
()
This method is deprecated. Don't use the SDK to listen to app visibility
changes. Use alternative ways for watching activity lifecycle changes such as
by overriding
Activity
lifecycle change methods, or by using Application.ActivityLifecycleCallbacks
. This deprecated method
always return false now and will be removed in the next version.
|
boolean | onDispatchVolumeKeyEventBeforeJellyBean
( KeyEvent
event)
This method is deprecated. Google Play services discontinued updates for
Jelly Bean (API levels 16, 17 & 18) since July 2021. This method always returns
false and will be removed in the next release.
|
void | removeAppVisibilityListener
( AppVisibilityListener
listener)
This method is deprecated. Don't use the SDK to listen to app visibility
changes. Use alternative ways for watching activity lifecycle changes such as
by overriding
Activity
lifecycle change methods, or by using Application.ActivityLifecycleCallbacks
. This deprecated method is
now a no-op and will be removed in the next version.
|
void | |
void | |
void | setLaunchCredentialsData
(CredentialsData credentialsData)
Sets the credentials data of the current user.
|
void |
Inherited Method Summary
Constants
public static final String OPTIONS_PROVIDER_CLASS_NAME_KEY
The metadata key to specify the fully qualified name of the OptionsProvider
implementation in the AndroidManifest.xml
.
Public Methods
public void addAppVisibilityListener ( AppVisibilityListener listener)
This method is deprecated.
Don't use the SDK to listen to app visibility changes. Use alternative ways for watching
activity lifecycle changes such as by overriding Activity
lifecycle change methods, or by using Application.ActivityLifecycleCallbacks
. This deprecated method is now a no-op
and will be removed in the next version.
Throws
IllegalStateException | * |
---|---|
NullPointerException | * |
public void addCastStateListener ( CastStateListener listener)
Adds a CastStateListener
to monitor changes of the current CastState
.
Throws
IllegalStateException | If this method is not called on the main thread. |
---|---|
NullPointerException | If listener is null
. |
public void addSessionTransferCallback ( SessionTransferCallback callback)
Adds a SessionTransferCallback
to monitor the transfer between different
endpoints.
Parameters
public CastOptions getCastOptions ()
Returns the CastOptions
.
Throws
public int getCastReasonCodeForCastStatusCode (int castStatusCode)
Returns the CastReasonCodes
for the given CastStatusCodes
.
Some of the CastStatusCodes
are used by Cast SDK internally. This method translates those CastStatusCodes
to CastReasonCodes
which is developer-friendly.
Parameters
public int getCastState ()
Returns the current CastState
.
Throws
public MediaNotificationManager getMediaNotificationManager ()
Returns the MediaNotificationManager
.
Throws
public MediaRouteSelector getMergedSelector ()
Returns the merged MediaRouteSelector
used for discovering devices and deciding whether to show the MediaRouteButton. This
selector is merged with any additional SessionProvider
s
that might be registered with the CastContext.
Throws
public PrecacheManager getPrecacheManager ()
Returns the PrecacheManager
.
public SessionManager getSessionManager ()
Returns the SessionManager
,
never returns null
.
Throws
public static CastContext getSharedInstance ( Context context)
Returns a shared instance of CastContext
.
The shared instance will be initialized on the first time this method is called.
Parameters
Context
.
If this is not an application Context
, Context.getApplicationContext()
will be called on the given context, to
retrieve it.Throws
- This method is not called on the main thread.
- The fully qualified name of the
OptionsProvider
implementation is not specified as a metadata in theAndroidManifest.xml
with keyOPTIONS_PROVIDER_CLASS_NAME_KEY
. -
optionsProviderClass
or its nullary constructor is not accessible. - Instantiation of
OptionsProvider
fails for some other reason.
public static CastContext getSharedInstance ()
Returns the shared instance of CastContext
.
This method must be called after CastContext
is initialized through getSharedInstance(Context, Executor)
. Otherwise, this method will return null
.
Throws
public static Task< CastContext > getSharedInstance ( Context context, Executor executor)
Returns an asynchronous Task
API
call on the shared instance of CastContext
,
which will not block the caller thread. The shared instance will be initialized on the
first time this method is called.
Note that getSharedInstance(Context, Executor)
should be called in the Activity.onCreate(Bundle)
method of the activities that might display a Cast
button. The Cast SDK provides CastButtonFactory
to set up a Cast button.
Note that other activity methods, for example Activity.onResume()
,
need to check the availability of the CastContext
object before using it, because the CastContext
is initialized on the Executor
.
Note that ModuleUnavailableException
could be thrown when the SDK fails to load the
internal Cast module. The caller will get the exception from Task.getException()
when the task completes.
Parameters
context | An application Context
.
If this is not an application Context
, Context.getApplicationContext()
will be called on the given context, to
retrieve it. |
---|---|
executor | An Executor
to load the internal Cast module. |
Throws
- This method is not called on the main thread.
- The fully qualified name of the
OptionsProvider
implementation is not specified as a metadata in theAndroidManifest.xml
with keyOPTIONS_PROVIDER_CLASS_NAME_KEY
. -
optionsProviderClass
or its nullary constructor is not accessible. - Instantiation of
OptionsProvider
fails for some other reason.
public boolean isAppVisible ()
This method is deprecated.
Don't use the SDK to listen to app visibility changes. Use alternative ways for watching
activity lifecycle changes such as by overriding Activity
lifecycle change methods, or by using Application.ActivityLifecycleCallbacks
. This deprecated method always return
false now and will be removed in the next version.
Throws
public boolean onDispatchVolumeKeyEventBeforeJellyBean ( KeyEvent event)
This method is deprecated.Google Play services discontinued updates for Jelly Bean (API levels 16, 17 & 18) since July 2021. This method always returns false and will be removed in the next release.
If your application supports SDK versions before JELLY BEAN, you should call this
method to delegate the handling of physical volume key events to the SDK so that users
can use the physical volume keys to control device volume of the Cast receiver. Clients
should override Activity.dispatchKeyEvent(KeyEvent)
and call this method:
@Override public boolean dispatchKeyEvent(KeyEvent event) { return CastContext.getSharedInstance().onDispatchVolumeKeyEventBeforeJellyBean(event) || super.dispatchKeyEvent(event); }
CastOptions.Builder.setVolumeDeltaBeforeIceCreamSandwich(double)
. This
method is a no-op on platform JELLY BEAN and above.Parameters
public void removeAppVisibilityListener ( AppVisibilityListener listener)
This method is deprecated.
Don't use the SDK to listen to app visibility changes. Use alternative ways for watching
activity lifecycle changes such as by overriding Activity
lifecycle change methods, or by using Application.ActivityLifecycleCallbacks
. This deprecated method is now a no-op
and will be removed in the next version.
Throws
public void removeCastStateListener ( CastStateListener listener)
Removes a CastStateListener
.
Throws
public void removeSessionTransferCallback ( SessionTransferCallback callback)
Removes a SessionTransferCallback
from monitoring endpoint transferring events.
Parameters
public void setLaunchCredentialsData (CredentialsData credentialsData)
Sets the credentials data of the current user. You should call this API with the
current user information right after getSharedInstance()
and whenever user account is changed.
Currently it serves two purposes:
- The credentials data will be embedded in the launch request. If it is to launch an Android TV app, the app can use the credentials data to determine if the app supports this specific user. If not, the cast app will be launched instead.
- If an Android TV app is launched, the credential data will be passed to the app, within the launch intent. The app can use this data to personalize the user experience.
public void setReceiverApplicationId ( String applicationId)
Sets the receiver application ID. This overrides the receiver application ID
specified in CastOptions
.
Calling this method will result in the receiver application ID used for discovery and application launch being changed. The Cast button status will also changed accordingly. If the new application ID is different than the current one, the current session will be ended if there is any.
Specifying null or an empty string indicates that the app does not want to discover receiver devices or launch a receiver application.
For discovering for multiple application IDs at the same time, or for discovering
for other application ID without affect the current session, use MediaRouter
APIs instead.