Summary: Constants | Methods | Inherited Methods | [Expand All]
public final class

# CastContext

extends Object

java.lang.Object
↳ | com.google.android.gms.cast.framework.CastContext

## Class Overview

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) {
                 ...
             }
         }

and specify its fully qualified class name in the 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" />
         ...

All public methods must be called from the main thread.

## Summary

Constants
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
void | addAppVisibilityListener(AppVisibilityListener listener) Adds an `AppVisibilityListener` to listen for UI visibility events.
void | addCastStateListener(CastStateListener listener) Adds a `CastStateListener` to monitor changes of the current `CastState`.
CastOptions | getCastOptions() Returns the `CastOptions`.
SessionManager | getSessionManager() Returns the `SessionManager`, never returns `null`.
static CastContext | getSharedInstance(Context context) Returns a shared instance of `CastContext`.
boolean | isAppVisible() Returns `true` if the application is visible.
boolean | onDispatchVolumeKeyEventBeforeJellyBean(KeyEvent event) 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.
void | registerLifecycleCallbacksBeforeIceCreamSandwich(FragmentActivity activity, Bundle savedInstanceState) If your application supports Android SDK versions below Ice Cream Sandwich, the SDK requires your application to call this method in each of your `onCreate(Bundle)` methods, so that it can be notified of the visibility of your application.
void | removeAppVisibilityListener(AppVisibilityListener listener) Removes an `AppVisibilityListener`.
void | removeCastStateListener(CastStateListener listener) Removes a `CastStateListener`.

[Expand] Inherited Methods
From class java.lang.Object
Object | clone()
boolean | equals(Object arg0)
void | finalize()
final Class<?> | getClass()
int | hashCode()
final void | notify()
final void | notifyAll()
String | toString()
final void | wait(long arg0, int arg1)
final void | wait(long arg0)
final void | wait()

## 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.

Constant Value: "com.google.android.gms.cast.framework.OPTIONS_PROVIDER_CLASS_NAME"

## Public Methods

#### public void addAppVisibilityListener (AppVisibilityListener listener)

Adds an `AppVisibilityListener` to listen for UI visibility events.

##### Throws

IllegalStateException | If this method is not called on the main thread.
NullPointerException | If listener is `null`.

#### 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 CastOptions getCastOptions ()

Returns the `CastOptions`.

##### Throws

IllegalStateException | If this method is not called on the main thread.

#### public SessionManager getSessionManager ()

Returns the `SessionManager`, never returns `null`.

##### Throws

IllegalStateException | If this method is not called on the main thread.

#### 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 | An application `Context`. If this is not an application `Context`, `getApplicationContext()` will be called on the given context, to retrieve it.

##### Throws

IllegalStateException | If This method is not called on the main thread. The fully qualified name of the `OptionsProvider` implementation is not specified as a metadata in the AndroidManifest.xml with key `OPTIONS_PROVIDER_CLASS_NAME_KEY`. `optionsProviderClass` or its nullary constructor is not accessible. Instantiation of `OptionsProvider` fails for some other reason.

#### public boolean isAppVisible ()

Returns `true` if the application is visible.

##### Throws

IllegalStateException | If this method is not called on the main thread.

#### public boolean onDispatchVolumeKeyEventBeforeJellyBean (KeyEvent event)

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 `dispatchKeyEvent(KeyEvent)` and call this method:

         @Override
         public boolean dispatchKeyEvent(KeyEvent event) {
             return CastContext.getSharedInstance().onDispatchVolumeKeyEventBeforeJellyBean(event)
                     || super.dispatchKeyEvent(event);
         }

The amount of volume delta to increase or decrease is set through `setVolumeDeltaBeforeIceCreamSandwich(double)`. This method is a no-op on platform JELLY BEAN and above.

##### Parameters

event | The dispatched event.

#### public void registerLifecycleCallbacksBeforeIceCreamSandwich (FragmentActivity activity, Bundle savedInstanceState)

If your application supports Android SDK versions below Ice Cream Sandwich, the SDK requires your application to call this method in each of your `onCreate(Bundle)` methods, so that it can be notified of the visibility of your application. This method is a no-op on Android devices running Ice Cream Sandwich or newer.

##### Parameters

activity | The calling `FragmentActivity`.
savedInstanceState | The `savedInstanceState` `Bundle` from the caller's `onCreate(Bundle)` parameter.

##### Throws

IllegalStateException | If this method is not called on the main thread.

#### public void removeAppVisibilityListener (AppVisibilityListener listener)

Removes an `AppVisibilityListener`.

##### Throws

IllegalStateException | If this method is not called on the main thread.

#### public void removeCastStateListener (CastStateListener listener)

Removes a `CastStateListener`.

##### Throws

IllegalStateException | If this method is not called on the main thread.