/** Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠSK ĠTele com ĠCo ., ĠLtd . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp : www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġcom . sk t . n ugu . sdk . platform . android . medi ap layer Ċ Ċ import Ġcom . sk t . n ugu . sdk . agent . medi ap layer .* Ċ import Ġcom . sk t . n ugu . sdk . core . interfaces . attachment . Attachment Ċ import Ġjava . net . URI Ċ Ċ class ĠIntegr ated MediaPlayer ( ĊĠĠĠ Ġprivate Ġval Ġaudio Player : ĠUri Source Play able Player , ĊĠĠĠ Ġprivate Ġval Ġt ts Player : ĠAttachment Play able Player Ċ ) Ġ: ĠMedia Player Interface Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Integr ated MediaPlayer " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠMAX _ SOURCE _ ID Ġ= ĠInt . MAX _ VALUE Ġ/ Ġ 2 Ġ- Ġ 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinterface ĠListener Ġ: ĊĠĠĠĠĠĠĠ ĠMedia Player Control Interface . Playback EventListener ĊĠĠĠĠĠĠĠ Ġ, ĠMedia Player Control Interface . Buffer EventListener ĊĠĠĠĠĠĠĠ Ġ, ĠMedia Player Control Interface . On Duration Listener ĊĊĠĠĠ Ġprivate Ġval Ġlistener For Audio Player Ġ= Ġobject Ġ: ĠListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Playback Started ( id : ĠSource Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayback EventListener ?. on Playback Started ( convert Source Id From Audio Player To Integr ated ( id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Playback Finished ( id : ĠSource Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayback EventListener ?. on Playback Finished ( convert Source Id From Audio Player To Integr ated ( id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Playback Error ( id : ĠSource Id , Ġtype : ĠError Type , Ġerror : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayback EventListener ?. on Playback Error ( convert Source Id From Audio Player To Integr ated ( id ), Ġtype , Ġerror ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Playback Paused ( id : ĠSource Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayback EventListener ?. on Playback Paused ( convert Source Id From Audio Player To Integr ated ( id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Playback Res umed ( id : ĠSource Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayback EventListener ?. on Playback Res umed ( convert Source Id From Audio Player To Integr ated ( id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Playback Stopped ( id : ĠSource Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayback EventListener ?. on Playback Stopped ( convert Source Id From Audio Player To Integr ated ( id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Buffer Under run ( id : ĠSource Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer EventListener ?. on Buffer Under run ( convert Source Id From Audio Player To Integr ated ( id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Buffer Ref illed ( id : ĠSource Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer EventListener ?. on Buffer Ref illed ( convert Source Id From Audio Player To Integr ated ( id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Retrie ved ( id : ĠSource Id , Ġduration : ĠLong ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Listener ?. on Retrie ved ( convert Source Id From Audio Player To Integr ated ( id ), Ġduration ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlistener For T ts Player Ġ= Ġobject Ġ: ĠListener Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Playback Started ( id : ĠSource Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayback EventListener ?. on Playback Started ( convert Source Id From T ts To Integr ated ( id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Playback Finished ( id : ĠSource Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayback EventListener ?. on Playback Finished ( convert Source Id From T ts To Integr ated ( id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Playback Error ( id : ĠSource Id , Ġtype : ĠError Type , Ġerror : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayback EventListener ?. on Playback Error ( convert Source Id From T ts To Integr ated ( id ), Ġtype , Ġerror ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Playback Paused ( id : ĠSource Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayback EventListener ?. on Playback Paused ( convert Source Id From T ts To Integr ated ( id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Playback Res umed ( id : ĠSource Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayback EventListener ?. on Playback Res umed ( convert Source Id From T ts To Integr ated ( id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Playback Stopped ( id : ĠSource Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġplayback EventListener ?. on Playback Stopped ( convert Source Id From T ts To Integr ated ( id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Buffer Under run ( id : ĠSource Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer EventListener ?. on Buffer Under run ( convert Source Id From T ts To Integr ated ( id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Buffer Ref illed ( id : ĠSource Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer EventListener ?. on Buffer Ref illed ( convert Source Id From T ts To Integr ated ( id )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Retrie ved ( id : ĠSource Id , Ġduration : ĠLong ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġduration Listener ?. on Retrie ved ( convert Source Id From T ts To Integr ated ( id ), Ġduration ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġplayback EventListener : ĠMedia Player Control Interface . Playback EventListener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġbuffer EventListener : ĠMedia Player Control Interface . Buffer EventListener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġduration Listener : ĠMedia Player Control Interface . On Duration Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġactive Player : ĠMedia Player Control Interface ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġaudio Player . set Playback EventListener ( listener For Audio Player ) ĊĠĠĠĠĠĠĠ Ġaudio Player . set Buffer EventListener ( listener For Audio Player ) ĊĠĠĠĠĠĠĠ Ġaudio Player . setOn Duration Listener ( listener For Audio Player ) ĊĠĠĠĠĠĠĠ Ġt ts Player . set Playback EventListener ( listener For T ts Player ) ĊĠĠĠĠĠĠĠ Ġt ts Player . set Buffer EventListener ( listener For T ts Player ) ĊĠĠĠĠĠĠĠ Ġt ts Player . setOn Duration Listener ( listener For T ts Player ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconvert Source Id From T ts To Integr ated ( id : ĠSource Id ): ĠSource Id Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( id . isError ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( MAX _ SOURCE _ ID Ġ<= Ġid . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġprevent Ġoverflow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSource Id (( id . id Ġ- ĠMAX _ SOURCE _ ID ) Ġ* Ġ 2 Ġ+ Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSource Id ( id . id Ġ* Ġ 2 Ġ+ Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconvert Source Id From Audio Player To Integr ated ( id : ĠSource Id ): ĠSource Id Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( id . isError ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( MAX _ SOURCE _ ID Ġ<= Ġid . id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġprevent Ġoverflow ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSource Id (( id . id Ġ- ĠMAX _ SOURCE _ ID ) Ġ* Ġ 2 Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSource Id ( id . id Ġ* Ġ 2 Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Source ( attachment Reader : ĠAttachment . Reader ): ĠSource Id Ġ{ ĊĠĠĠĠĠĠĠ Ġactive Player Ġ= Ġt ts Player ĊĠĠĠĠĠĠĠ Ġreturn Ġconvert Source Id From T ts To Integr ated ( tts Player . set Source ( attachment Reader )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Source ( uri : ĠURI , Ġcache Key : ĠCache Key ?): ĠSource Id Ġ{ ĊĠĠĠĠĠĠĠ Ġactive Player Ġ= Ġaudio Player ĊĠĠĠĠĠĠĠ Ġreturn Ġconvert Source Id From Audio Player To Integr ated ( audio Player . set Source ( uri , Ġcache Key )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġplay ( id : ĠSource Id ): ĠBoolean Ġ= Ġoperation At Valid Player ( id , Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactive Player ?. play ( it ) Ġ?: Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstop ( id : ĠSource Id ): ĠBoolean Ġ= Ġoperation At Valid Player ( id , Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactive Player ?. stop ( it ) Ġ?: Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpause ( id : ĠSource Id ): ĠBoolean Ġ= Ġoperation At Valid Player ( id , Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactive Player ?. pause ( it ) Ġ?: Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġresume ( id : ĠSource Id ): ĠBoolean Ġ= Ġoperation At Valid Player ( id , Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactive Player ?. resume ( it ) Ġ?: Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġseek To ( id : ĠSource Id , Ġoffset In Milliseconds : ĠLong ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġoperation At Valid Player ( id , Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Player ?. seek To ( it , Ġoffset In Milliseconds ) Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Offset ( id : ĠSource Id ): ĠLong Ġ= ĊĠĠĠĠĠĠĠ Ġoperation At Valid Player ( id , ĠMED IA _ PLAYER _ INVALID _ OFFSET ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Player ?. get Offset ( it ) Ġ?: ĠMED IA _ PLAYER _ INVALID _ OFFSET ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġoperation At Valid Player ( id : ĠSource Id , Ġfailure ReturnValue : ĠT , Ġop : Ġ( converted Id : ĠSource Id ) Ġ-> ĠT ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( id . isError ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfailure ReturnValue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( id . id Ġ% Ġ 2 Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġt ts Ġid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tts Player Ġ== Ġactive Player ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġop ( Source Id ( id . id Ġ/ Ġ 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailure ReturnValue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( audio Player Ġ== Ġactive Player ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġop ( Source Id (( id . id Ġ- Ġ 1 ) Ġ/ 2 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfailure ReturnValue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Playback EventListener ( listener : ĠMedia Player Control Interface . Playback EventListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġplayback EventListener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Buffer EventListener ( listener : ĠMedia Player Control Interface . Buffer EventListener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġbuffer EventListener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset On Duration Listener ( listener : ĠMedia Player Control Interface . On Duration Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġduration Listener Ġ= Ġlistener ĊĠĠĠ Ġ} Ċ }