package Ġai . re ver . go on j . analytics Ċ Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . subjects . Behavior Subject Ċ Ċ enum Ġclass ĠPlayer Analytics Enum { ĊĠĠĠ ĠON _ PLAYER _ STATE _ CHANGED , ĊĠĠĠ ĠON _ SEEK _ PROC ES SED , ĊĠĠĠ ĠON _ PLAYER _ ERROR , ĊĠĠĠ ĠON _ SEEK _ STARTED , ĊĠĠĠ ĠON _ LOADING _ CHANGED , ĊĠĠĠ ĠON _ VOLUME _ CHANGED , ĊĠĠĠ ĠON _ LOAD _ COMPLETED , ĊĠĠĠ ĠON _ METADATA , ĊĠĠĠ ĠON _ PLAY BACK _ PARAMETERS _ CHANGED , ĊĠĠĠ ĠON _ TRACK S _ CHANGED , ĊĠĠĠ ĠON _ POSITION _ DIS CONT IN U ITY , ĊĠĠĠ ĠON _ REPEAT _ MODE _ CHANGED , ĊĠĠĠ ĠON _ SH UFF LE _ MODE _ ENABLED _ CHANGED , ĊĠĠĠ ĠON _ TIME LINE _ CHANGED , ĊĠĠĠ ĠRE MOTE _ LOG _ STATUS , ĊĠĠĠ ĠRE MOTE _ LOG _ ERROR , ĊĠĠĠ ĠSET _ PLAYER _ STATE _ REMOTE Ċ } Ċ Ċ const Ġval ĠEVENT _ TIME Ġ= Ġ" Analytics Listener . Event Time " Ċ const Ġval ĠERROR Ġ= Ġ" Exo Playback Exception " Ċ const Ġval ĠIS _ LOADING Ġ= Ġ" Is Loading " Ċ const Ġval ĠV OL UME Ġ= Ġ" Volume " Ċ const Ġval ĠLOAD _ EVENT _ INFO Ġ= Ġ" Media Source EventListener . Load Event Info " Ċ const Ġval ĠMED IA _ LOAD _ EVENT Ġ= Ġ" Media Source EventListener . Media Load Data " Ċ const Ġval ĠMET ADATA Ġ= Ġ" Metadata " Ċ const Ġval ĠP LAY _ WHEN _ READY Ġ= Ġ" Play When Ready " Ċ const Ġval ĠP LAY BACK _ STATE Ġ= Ġ" Playback State " Ċ const Ġval ĠON _ PLAY BACK _ PARAMETERS _ CHANGED Ġ= Ġ" on Playback Parameters Changed " Ċ const Ġval ĠP LAY BACK _ PARAMETERS Ġ= Ġ" Playback Parameters " Ċ const Ġval ĠTR ACK _ GROUP S Ġ= Ġ" Track Groups " Ċ const Ġval ĠTR ACK _ SELECTION S Ġ=" Track Selections " Ċ const Ġval ĠRE ASON Ġ= Ġ" Reason " Ċ const Ġval ĠRE PEAT _ MODE Ġ= Ġ" Repeat Mode " Ċ const Ġval ĠSH UFF LE _ MODE _ ENABLED Ġ= Ġ" Shuffle Mode Enabled " Ċ const Ġval ĠTIME LINE Ġ= Ġ" Timeline " Ċ const Ġval ĠMAN IFEST Ġ= Ġ" Manifest " Ċ const Ġval ĠMESSAGE Ġ= Ġ" Message " Ċ const Ġval ĠSESSION _ ID Ġ= Ġ" Session ID " Ċ const Ġval ĠSESSION _ STATUS Ġ= Ġ" Session Status " Ċ const Ġval ĠITEM _ ID Ġ= Ġ" Item ID " Ċ const Ġval ĠITEM _ STATUS Ġ= Ġ" Item Status " Ċ const Ġval ĠERROR _ REMOTE Ġ= Ġ" Error Remote " Ċ const Ġval ĠERROR _ REMOTE _ CODE Ġ= Ġ" Error Remote Code " Ċ const Ġval ĠIS _ REMOTE _ PLAY ING Ġ= Ġ" Is Remote Playing " Ċ Ċ data Ġclass ĠGo on j Analytics Model ( ĊĠĠĠ Ġval Ġis Remote Ġ: ĠBoolean , ĊĠĠĠ Ġval Ġtype Ġ: ĠPlayer Analytics Enum , ĊĠĠĠ Ġval Ġparameter : ĠMap < String , ĠAny ?> Ċ ){ ĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ: ĠString { ĊĊĠĠĠĠĠĠĠ Ġval Ġplayer Type Ġ= Ġif ( is Remote ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" REMOTE " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" LOCAL " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ player Type Ġ${ type . name } Ġ Ġ$ parameter " ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ object ĠGo on j Analytics Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġanalytics Subject Behaviour Ġ= ĠBehavior Subject . create < Go on j Analytics Model >() ĊĠĠĠ Ġval Ġanalytics Observable Ġget () Ġ= Ġ( analytics Subject Behaviour Ġas ĠObservable < Go on j Analytics Model >) ĊĊĠĠĠ Ġfun Ġlog Event ( is Remote : ĠBoolean , Ġbehaviour : ĠPlayer Analytics Enum , Ġdata : ĠMap < String , ĠAny ?> ) Ġ{ ĊĠĠĠĠĠĠĠ Ġanalytics Subject Behaviour . onNext ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGo on j Analytics Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Remote , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbehaviour , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ