Class AnalyticsSessionProxy
- java.lang.Object
-
- com.castlabs.analytics.AnalyticsSessionProxy
-
- All Implemented Interfaces:
AnalyticsSession
,PlayerControllerPlugin.Component
public class AnalyticsSessionProxy extends Object implements AnalyticsSession
Proxy implementation of anAnalyticsSession
that can delegate to a list of session.- Since:
- 3.1.0
-
-
Constructor Summary
Constructors Constructor Description AnalyticsSessionProxy(List<AnalyticsSession> sessions)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
adError(CastlabsPlayerException exception)
Inform the session that an ad error occurred.void
adSkipped()
Inform the session that the ad is skipped.void
adStart(Ad ad)
Inform the session that an ad playback started.void
adStop()
Inform the session that an ad playback stopped.void
detachFromController()
Detach the Analytics session from the PlayerController.List<AnalyticsSession>
getSessions()
Class
id()
Returns the class that is used to identify this component when it is registered with the player controller.void
onDestroy(PlayerController playerController)
Called when the controller is destroyed.void
onExoPlayerStateChanged(boolean playWhenReady, int playbackState)
Lets the Analytics Sessions know of any state changes in ExoPlayer.void
onOpenBundle(PlayerController playerController, Bundle bundle)
Called when the player controller is opened with a bundle.void
onOpenState(PlayerController playerController, PlayerConfig playerConfig)
Called when the player controller is opened with a config.void
release()
Terminate the AnalyticsSession.void
seekEnd()
Inform the session that the seeking has completed.void
seekProcessed()
Inform the session that the requested seek position of the video playback is processed.void
seekStart(long newPosition)
Inform the session that the new position of the video playback is requested.void
sendError(String code, String message, int severity)
Send an error manually.void
start(PlayerController playerController, AnalyticsMetaData analyticsMetaData)
Start the session on the given controllervoid
stop()
Stop the session.
-
-
-
Constructor Detail
-
AnalyticsSessionProxy
public AnalyticsSessionProxy(@Nullable List<AnalyticsSession> sessions)
-
-
Method Detail
-
getSessions
@Nullable public List<AnalyticsSession> getSessions()
-
start
public void start(@NonNull PlayerController playerController, @NonNull AnalyticsMetaData analyticsMetaData)
Description copied from interface:AnalyticsSession
Start the session on the given controller- Specified by:
start
in interfaceAnalyticsSession
- Parameters:
playerController
- The player controlleranalyticsMetaData
- The meta-data associated with this session
-
stop
public void stop()
Description copied from interface:AnalyticsSession
Stop the session.- Specified by:
stop
in interfaceAnalyticsSession
-
adStart
public void adStart(Ad ad)
Description copied from interface:AnalyticsSession
Inform the session that an ad playback started.- Specified by:
adStart
in interfaceAnalyticsSession
- Parameters:
ad
- The ad metadata. Contains streamType (EitherSdkConsts.AD_EMBEDDED
if the ad is embedded into the content orSdkConsts.AD_SEPARATE
if the ad is played separate from the main content.), playerType (EitherSdkConsts.AD_EMBEDDED
if the ad is using the same player as the main content orSdkConsts.AD_SEPARATE
if the ad is played in a separate player and adPosition The ad position. One ofSdkConsts.AD_POSITION_PREROLL
SdkConsts.AD_POSITION_MIDROLL
, orSdkConsts.AD_POSITION_POSTROLL
-
adStop
public void adStop()
Description copied from interface:AnalyticsSession
Inform the session that an ad playback stopped.- Specified by:
adStop
in interfaceAnalyticsSession
-
adError
public void adError(CastlabsPlayerException exception)
Description copied from interface:AnalyticsSession
Inform the session that an ad error occurred.- Specified by:
adError
in interfaceAnalyticsSession
- Parameters:
exception
- The error's exception
-
adSkipped
public void adSkipped()
Description copied from interface:AnalyticsSession
Inform the session that the ad is skipped.- Specified by:
adSkipped
in interfaceAnalyticsSession
-
sendError
public void sendError(String code, String message, int severity)
Description copied from interface:AnalyticsSession
Send an error manually. Note that the player integration takes care of playback error occurring during playback. Use this method to send error that happen outside of the playback session.- Specified by:
sendError
in interfaceAnalyticsSession
- Parameters:
code
- The error codemessage
- The error messageseverity
- The severity of the error
-
seekStart
public void seekStart(long newPosition)
Description copied from interface:AnalyticsSession
Inform the session that the new position of the video playback is requested.- Specified by:
seekStart
in interfaceAnalyticsSession
- Parameters:
newPosition
- the new position in microseconds
-
seekEnd
public void seekEnd()
Description copied from interface:AnalyticsSession
Inform the session that the seeking has completed.Triggered when the player is ready to continue playback by transitioning to either
PlayerController.State.Playing
orPlayerController.State.Pausing
.- Specified by:
seekEnd
in interfaceAnalyticsSession
-
seekProcessed
public void seekProcessed()
Description copied from interface:AnalyticsSession
Inform the session that the requested seek position of the video playback is processed. This is called right after the player has updated the internal playback position.- Specified by:
seekProcessed
in interfaceAnalyticsSession
-
detachFromController
public void detachFromController()
Description copied from interface:AnalyticsSession
Detach the Analytics session from the PlayerController. Unregister listeners and remove any references.This method allows to unbind the AnalyticsSession from a PlayerController, to later set it to a new controller and continue with the same analytics session.
Should be called by client code after getting the AnalyticsSession via
PlayerController.getAnalyticsSession()
, and before releasing the PlayerController.You can later re-attach the AnalyticsSession to a PlayerController before
opening
it with thePlayerController.setAnalyticsSession(AnalyticsSession)
method- Specified by:
detachFromController
in interfaceAnalyticsSession
-
release
public void release()
Description copied from interface:AnalyticsSession
Terminate the AnalyticsSession. Although implementation is vendor-specific, this method will terminate any ongoing session as if the player itself had been destroyed. Generally, there's no need to call this manually. Unless you're detaching the session and not reusing it later.- Specified by:
release
in interfaceAnalyticsSession
-
onExoPlayerStateChanged
public void onExoPlayerStateChanged(boolean playWhenReady, int playbackState)
Description copied from interface:AnalyticsSession
Lets the Analytics Sessions know of any state changes in ExoPlayer.This method allows any interested Analytics sessions to know of any changes in the ExoPlayer even if it doesn't correspond to any state changes in the PlayerController.
- Specified by:
onExoPlayerStateChanged
in interfaceAnalyticsSession
-
id
@NonNull public Class id()
Description copied from interface:PlayerControllerPlugin.Component
Returns the class that is used to identify this component when it is registered with the player controller. This is what you need to pass toPlayerController.getComponent(Class)
to get the registered instance of this component.- Specified by:
id
in interfacePlayerControllerPlugin.Component
- Returns:
- The class that identifies this component.
-
onDestroy
public void onDestroy(@NonNull PlayerController playerController)
Description copied from interface:PlayerControllerPlugin.Component
Called when the controller is destroyed. Implementation must use this to unregister any listeners that were attached to the controller before.- Specified by:
onDestroy
in interfacePlayerControllerPlugin.Component
- Parameters:
playerController
- The player controller
-
onOpenBundle
public void onOpenBundle(@NonNull PlayerController playerController, @NonNull Bundle bundle)
Description copied from interface:PlayerControllerPlugin.Component
Called when the player controller is opened with a bundle. Implementations can use this to extract or modify bundle data.- Specified by:
onOpenBundle
in interfacePlayerControllerPlugin.Component
- Parameters:
playerController
- The player controllerbundle
- The bundle
-
onOpenState
public void onOpenState(PlayerController playerController, PlayerConfig playerConfig)
Description copied from interface:PlayerControllerPlugin.Component
Called when the player controller is opened with a config. Implementations can use this to extract or modify config data.- Specified by:
onOpenState
in interfacePlayerControllerPlugin.Component
- Parameters:
playerController
- The player controllerplayerConfig
- The playback state
-
-