/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 ĠEric ĠA . ĠSn ell Ċ Ġ* Ċ Ġ* Ġ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 . e al va . to que . service . session . client Ċ Ċ // Ċ // interface ĠSession Control Ġ{ Ċ // Ġ Ġ/** Ċ // ĠĠ Ġ* ĠRequest Ġthat Ġthe Ġplayer Ġprepare Ġfor Ġplayback . ĠThis Ġcan Ġdecrease Ġthe Ġtime Ġit Ġtakes Ġto Ġstart Ċ // ĠĠ Ġ* Ġplayback Ġwhen Ġa Ġplay Ġcommand Ġis Ġreceived . ĠPre paration Ġis Ġnot Ġrequired . ĠYou Ġcan Ġcall Ġ{@ link Ċ // ĠĠ Ġ* Ġ# play } Ġwithout Ġcalling Ġthis Ġmethod Ġbefore hand . Ċ // ĠĠ Ġ*/ Ċ // Ġ Ġfun Ġprepare () Ċ // Ċ // Ġ Ġ/** Ċ // ĠĠ Ġ* ĠRequest Ġthat Ġthe Ġplayer Ġprepare Ġplayback Ġfor Ġa Ġspecific Ġmedia Ġid . ĠThis Ġcan Ġdecrease Ġthe Ġtime Ċ // ĠĠ Ġit Ċ // ĠĠ Ġ* Ġtakes Ġto Ġstart Ġplayback Ġwhen Ġa Ġplay Ġcommand Ġis Ġreceived . ĠPre paration Ġis Ġnot Ġrequired . ĠYou Ġcan Ċ // ĠĠ Ġ* Ġcall Ġ[ play From Media Id ] Ġwithout Ġcalling Ġthis Ġmethod Ġbefore hand . Ċ // ĠĠ Ġ* Ċ // ĠĠ Ġ* Ġ@ param Ġmedia Id ĠThe Ġid Ġof Ġthe Ġrequested Ġmedia . Ċ // ĠĠ Ġ* Ġ@ param Ġextras ĠOptional Ġextras Ġthat Ġcan Ġinclude Ġextra Ġinformation Ġabout Ġthe Ġmedia Ġitem Ġto Ġbe Ċ // ĠĠ Ġ* Ġprepared . Ċ // ĠĠ Ġ*/ Ċ // Ġ Ġfun Ġprepare From Media Id ( media Id : ĠString , Ġextras : ĠBundle Ġ= ĠBundle . EMPTY ) Ċ // Ċ // Ġ Ġ/** Ċ // ĠĠ Ġ* ĠRequest Ġthat Ġthe Ġplayer Ġprepare Ġplayback Ġfor Ġa Ġspecific Ġsearch Ġquery . ĠThis Ġcan Ġdecrease Ġthe Ċ // ĠĠ Ġ* Ġtime Ġit Ġtakes Ġto Ġstart Ġplayback Ġwhen Ġa Ġplay Ġcommand Ġis Ġreceived . ĠAn Ġempty Ġor Ġnull Ġquery Ċ // ĠĠ Ġshould Ċ // ĠĠ Ġ* Ġbe Ġtreated Ġas Ġa Ġrequest Ġto Ġprepare Ġany Ġmusic . ĠPre paration Ġis Ġnot Ġrequired . ĠYou Ġcan Ġcall Ċ // ĠĠ Ġ* Ġ[ play From Search ] Ġwithout Ġcalling Ġthis Ġmethod Ġbefore hand . Ċ // ĠĠ Ġ* Ċ // ĠĠ Ġ* Ġ@ param Ġquery ĠThe Ġsearch Ġquery . Ċ // ĠĠ Ġ* Ġ@ param Ġextras ĠOptional Ġextras Ġthat Ġcan Ġinclude Ġextra Ġinformation Ġabout Ġthe Ġquery . Ċ // ĠĠ Ġ*/ Ċ // Ġ Ġfun Ġprepare From Search ( query : ĠString , Ġextras : ĠBundle Ġ= ĠBundle . EMPTY ) Ċ // Ċ // Ġ Ġ/** Ċ // ĠĠ Ġ* ĠRequest Ġthat Ġthe Ġplayer Ġprepare Ġplayback Ġfor Ġa Ġspecific Ġ[ Uri ]. ĠThis Ġcan Ġdecrease Ġthe Ġtime Ġit Ċ // ĠĠ Ġ* Ġtakes Ġto Ġstart Ġplayback Ġwhen Ġa Ġplay Ġcommand Ġis Ġreceived . ĠPre paration Ġis Ġnot Ġrequired . ĠYou Ġcan Ċ // ĠĠ Ġ* Ġcall Ġ[ play From Uri ] Ġwithout Ġcalling Ġthis Ġmethod Ġbefore hand . Ċ // ĠĠ Ġ* Ċ // ĠĠ Ġ* Ġ@ param Ġuri ĠThe ĠURI Ġof Ġthe Ġrequested Ġmedia . Ċ // ĠĠ Ġ* Ġ@ param Ġextras ĠOptional Ġextras Ġthat Ġcan Ġinclude Ġextra Ġinformation Ġabout Ġthe Ġmedia Ġitem Ġto Ġbe Ċ // ĠĠ Ġ* Ġprepared . Ċ // ĠĠ Ġ*/ Ċ // Ġ Ġfun Ġprepare From Uri ( uri : ĠUri , Ġextras : ĠBundle Ġ= ĠBundle . EMPTY ) Ċ // Ċ // Ġ Ġ/** ĠRequest Ġthat Ġthe Ġplayer Ġstart Ġits Ġplayback Ġat Ġits Ġcurrent Ġposition . Ġ*/ Ċ // Ġ Ġfun Ġplay () Ċ // Ċ // Ġ Ġ/** Ċ // ĠĠ Ġ* ĠRequest Ġthat Ġthe Ġplayer Ġstart Ġplayback Ġfor Ġa Ġspecific Ġ[ Uri ]. Ċ // ĠĠ Ġ* Ċ // ĠĠ Ġ* Ġ@ param Ġmedia Id ĠThe ĠID Ġof Ġthe Ġrequested Ġmedia . Ċ // ĠĠ Ġ* Ġ@ param Ġextras ĠOptional Ġextras Ġthat Ġcan Ġinclude Ġextra Ġinformation Ġabout Ġthe Ġmedia Ġitem Ġto Ġbe Ċ // ĠĠ Ġ* Ġplayed . Ċ // ĠĠ Ġ*/ Ċ // Ġ Ġfun Ġplay From Media Id ( media Id : ĠString , Ġextras : ĠBundle Ġ= ĠBundle . EMPTY ) Ċ // Ċ // Ġ Ġ/** Ċ // ĠĠ Ġ* ĠRequest Ġthat Ġthe Ġplayer Ġstart Ġplayback Ġfor Ġa Ġspecific Ġsearch Ġquery . ĠAn Ġempty Ġor Ġnull Ġquery Ċ // ĠĠ Ġ* Ġshould Ġbe Ġtreated Ġas Ġa Ġrequest Ġto Ġplay Ġany Ġmusic . Ċ // ĠĠ Ġ* Ċ // ĠĠ Ġ* Ġ@ param Ġquery ĠThe Ġsearch Ġquery . Ċ // ĠĠ Ġ* Ġ@ param Ġextras ĠOptional Ġextras Ġthat Ġcan Ġinclude Ġextra Ġinformation Ġabout Ġthe Ġquery . Ċ // ĠĠ Ġ*/ Ċ // Ġ Ġfun Ġplay From Search ( query : ĠString , Ġextras : ĠBundle Ġ= ĠBundle . EMPTY ) Ċ // Ċ // Ġ Ġ/** Ċ // ĠĠ Ġ* ĠRequest Ġthat Ġthe Ġplayer Ġstart Ġplayback Ġfor Ġa Ġspecific Ġ[ Uri ]. Ċ // ĠĠ Ġ* Ċ // ĠĠ Ġ* Ġ@ param Ġuri Ġ ĠThe ĠURI Ġof Ġthe Ġrequested Ġmedia . Ċ // ĠĠ Ġ* Ġ@ param Ġextras ĠOptional Ġextras Ġthat Ġcan Ġinclude Ġextra Ġinformation Ġabout Ġthe Ġmedia Ġitem Ġto Ġbe Ċ // ĠĠ Ġ* Ġplayed . Ċ // ĠĠ Ġ*/ Ċ // Ġ Ġfun Ġplay From Uri ( uri : ĠUri , Ġextras : ĠBundle Ġ= ĠBundle . EMPTY ) Ċ // Ċ // Ġ Ġ/** Ċ // ĠĠ Ġ* ĠPlay s Ġan Ġitem Ġwith Ġa Ġspecific Ġid Ġin Ġthe Ġplay Ġqueue . ĠIf Ġyou Ġspecify Ġan Ġid Ġthat Ġis Ġnot Ġin Ġthe Ċ // ĠĠ Ġ* Ġplay Ġqueue , Ġthe Ġbehavior Ġis Ġundefined . Ċ // ĠĠ Ġ*/ Ċ // Ġ Ġfun Ġskip To Queue Item ( id : ĠLong ) Ċ // Ċ // Ġ Ġ/** Ċ // ĠĠ Ġ* ĠRequest Ġthat Ġthe Ġplayer Ġpause Ġits Ġplayback Ġand Ġstay Ġat Ġits Ġcurrent Ġposition . Ċ // ĠĠ Ġ*/ Ċ // Ġ Ġfun Ġpause () Ċ // Ċ // Ġ Ġ/** Ċ // ĠĠ Ġ* ĠRequest Ġthat Ġthe Ġplayer Ġstop Ġits Ġplayback ; Ġit Ġmay Ġclear Ġits Ġstate Ġin Ġwhatever Ġway Ġis Ċ // ĠĠ Ġ* Ġappropriate . Ċ // ĠĠ Ġ*/ Ċ // Ġ Ġfun Ġstop () Ċ // Ċ // Ġ Ġ/** ĠMov es Ġto Ġa Ġnew Ġlocation Ġin Ġthe Ġmedia Ġstream . Ġ*/ Ċ // Ġ Ġfun Ġseek To ( pos : ĠM illis ) Ċ // Ċ // Ġ Ġ/** Ċ // ĠĠ Ġ* ĠStarts Ġfast Ġforwarding . ĠIf Ġplayback Ġis Ġalready Ġfast Ġforwarding Ġthis Ġmay Ġincrease Ġthe Ġrate . Ċ // ĠĠ Ġ*/ Ċ // Ġ Ġfun Ġfast Forward () Ċ // Ċ // Ġ Ġ/** ĠSk ips Ġto Ġthe Ġnext Ġitem . Ġ*/ Ċ // Ġ Ġfun Ġskip To Next () Ċ // Ċ // Ġ Ġ/** ĠStarts Ġre wind ing . ĠIf Ġplayback Ġis Ġalready Ġre wind ing Ġthis Ġmay Ġincrease Ġthe Ġrate . Ġ*/ Ċ // Ġ Ġfun Ġre wind () Ċ // Ċ // Ġ Ġ/** ĠSk ips Ġto Ġthe Ġprevious Ġitem . Ġ*/ Ċ // Ġ Ġfun Ġskip To Previous () Ċ // Ċ // Ġ Ġ/** ĠR ates Ġthe Ġcurrent Ġcontent . ĠThis Ġwill Ġcause Ġthe Ġrating Ġto Ġbe Ġset Ġfor Ġthe Ġcurrent Ġitem . Ġ*/ Ċ // Ġ Ġfun Ġset Rating ( rating : ĠStar Rating ) Ċ // Ċ // Ġ Ġ/** ĠEnables / disable s Ġcaption ing Ġfor Ġthis Ġsession . Ġ*/ Ċ // Ġ Ġfun Ġset Caption ing Enabled ( enabled : ĠBoolean ) Ċ // Ċ // Ġ Ġ/** ĠSets Ġthe Ġrepeat Ġmode Ġfor Ġthis Ġsession . Ġ*/ Ċ // Ġ Ġfun Ġset Repeat Mode ( mode : ĠRepeat Mode ) Ċ // Ċ // Ġ Ġ/** ĠSets Ġthe Ġshuffle Ġmode Ġfor Ġthis Ġsession . Ġ*/ Ċ // Ġ Ġfun Ġset Shuffle Mode ( mode : ĠSh uffle Mode ) Ċ // Ċ //// Ġ Ġ/** Ċ //// ĠĠ Ġ* ĠSends Ġthe Ġid Ġand Ġargs Ġfrom Ġa Ġcustom Ġaction Ġfor Ġthe Ġ[ Media Session Compat ] Ġto Ġperform . Ċ //// ĠĠ Ġ* Ċ //// ĠĠ Ġ* Ġ@ see Ġ. send Custom Action Ċ //// ĠĠ Ġ* Ġ@ see ĠMedia Session Compat . ACTION _ FLAG _ AS _ IN APPRO PRI ATE Ċ //// ĠĠ Ġ* Ġ@ see ĠMedia Session Compat . ACTION _ SKIP _ AD Ċ //// ĠĠ Ġ* Ġ@ see ĠMedia Session Compat . ACTION _ FOLLOW Ċ //// ĠĠ Ġ* Ġ@ see ĠMedia Session Compat . ACTION _ UN FOLLOW Ċ //// ĠĠ Ġ* Ġ@ param Ġaction ĠThe Ġaction Ġidentifier Ġof Ġthe Ġ[ Playback State Compat . Custom Action ] Ġas Ġspecified Ċ // Ġby Ċ //// ĠĠ Ġ* Ġthe Ġ[ Media Session Compat ]. Ċ //// ĠĠ Ġ* Ġ@ param Ġargs ĠOptional Ġarguments Ġto Ġsupply Ġto Ġthe Ġ[ Media Session Compat ] Ġfor Ġthis Ċ // Ġcustom Ġaction . Ċ //// ĠĠ Ġ*/ Ċ //// Ġ Ġfun Ġsend Custom Action ( action : ĠString ?, Ġargs : ĠBundle ?) Ċ // Ċ // Ġ Ġcompanion Ġobject Ġ{ Ċ // ĠĠĠ Ġoperator Ġfun Ġinvoke ( controls : ĠMedia Controller Compat . Transport Controls ): ĠSession Control Ġ= Ċ // ĠĠĠĠĠ ĠSession Control Impl ( controls ) Ċ // Ġ Ġ} Ċ //} Ċ // Ċ // private Ġclass ĠSession Control Impl ( Ċ // Ġ Ġprivate Ġval Ġcontrols : ĠMedia Controller Compat . Transport Controls Ċ // ) Ġ: ĠSession Control Ġ{ Ċ // Ġ Ġoverride Ġfun Ġprepare () Ġ= Ġcontrols . prepare () Ċ // Ġ Ġoverride Ġfun Ġprepare From Media Id ( media Id : ĠString , Ġextras : ĠBundle ) Ġ= Ċ // ĠĠĠ Ġcontrols . prepare From Media Id ( media Id , Ġextras ) Ċ // Ċ // Ġ Ġoverride Ġfun Ġprepare From Search ( query : ĠString , Ġextras : ĠBundle ) Ġ= Ċ // ĠĠĠ Ġcontrols . prepare From Search ( query , Ġextras ) Ċ // Ċ // Ġ Ġoverride Ġfun Ġprepare From Uri ( uri : ĠUri , Ġextras : ĠBundle ) Ġ= Ġcontrols . prepare From Uri ( uri , Ġextras ) Ċ // Ġ Ġoverride Ġfun Ġplay () Ġ= Ġcontrols . play () Ċ // Ġ Ġoverride Ġfun Ġplay From Media Id ( media Id : ĠString , Ġextras : ĠBundle ) Ġ= Ċ // ĠĠĠ Ġcontrols . play From Media Id ( media Id , Ġextras ) Ċ // Ċ // Ġ Ġoverride Ġfun Ġplay From Search ( query : ĠString , Ġextras : ĠBundle ) Ġ= Ċ // ĠĠĠ Ġcontrols . play From Search ( query , Ġextras ) Ċ // Ċ // Ġ Ġoverride Ġfun Ġplay From Uri ( uri : ĠUri , Ġextras : ĠBundle ) Ġ= Ġcontrols . play From Uri ( uri , Ġextras ) Ċ // Ġ Ġoverride Ġfun Ġskip To Queue Item ( id : ĠLong ) Ġ= Ġcontrols . skip To Queue Item ( id ) Ċ // Ġ Ġoverride Ġfun Ġpause () Ġ= Ġcontrols . pause () Ċ // Ġ Ġoverride Ġfun Ġstop () Ġ= Ġcontrols . stop () Ċ // Ġ Ġoverride Ġfun Ġseek To ( pos : ĠM illis ) Ġ= Ġcontrols . seek To ( pos ()) Ċ // Ġ Ġoverride Ġfun Ġfast Forward () Ġ= Ġcontrols . fast Forward () Ċ // Ġ Ġoverride Ġfun Ġskip To Next () Ġ= Ġcontrols . skip To Next () Ċ // Ġ Ġoverride Ġfun Ġre wind () Ġ= Ġcontrols . rewind () Ċ // Ġ Ġoverride Ġfun Ġskip To Previous () Ġ= Ġcontrols . skip To Previous () Ċ // Ġ Ġoverride Ġfun Ġset Rating ( rating : ĠStar Rating ) Ġ= Ġcontrols . set Rating ( rating . to Rating Compat ()) Ċ // Ġ Ġoverride Ġfun Ġset Caption ing Enabled ( enabled : ĠBoolean ) Ġ= Ġcontrols . set Caption ing Enabled ( enabled ) Ċ // Ġ Ġoverride Ġfun Ġset Repeat Mode ( mode : ĠRepeat Mode ) Ġ= Ġcontrols . set Repeat Mode ( mode . as Compat ) Ċ // Ġ Ġoverride Ġfun Ġset Shuffle Mode ( mode : ĠSh uffle Mode ) Ġ= Ġcontrols . set Shuffle Mode ( mode . as Compat ) Ċ //} Ċ // Ċ // object ĠNull Session Control Ġ: ĠSession Control Ġ{ Ċ // Ġ Ġoverride Ġfun Ġprepare () Ġ= ĠUnit Ċ // Ġ Ġoverride Ġfun Ġprepare From Media Id ( media Id : ĠString , Ġextras : ĠBundle ) Ġ= ĠUnit Ċ // Ġ Ġoverride Ġfun Ġprepare From Search ( query : ĠString , Ġextras : ĠBundle ) Ġ= ĠUnit Ċ // Ġ Ġoverride Ġfun Ġprepare From Uri ( uri : ĠUri , Ġextras : ĠBundle ) Ġ= ĠUnit Ċ // Ġ Ġoverride Ġfun Ġplay () Ġ= ĠUnit Ċ // Ġ Ġoverride Ġfun Ġplay From Media Id ( media Id : ĠString , Ġextras : ĠBundle ) Ġ= ĠUnit Ċ // Ġ Ġoverride Ġfun Ġplay From Search ( query : ĠString , Ġextras : ĠBundle ) Ġ= ĠUnit Ċ // Ġ Ġoverride Ġfun Ġplay From Uri ( uri : ĠUri , Ġextras : ĠBundle ) Ġ= ĠUnit Ċ // Ġ Ġoverride Ġfun Ġskip To Queue Item ( id : ĠLong ) Ġ= ĠUnit Ċ // Ġ Ġoverride Ġfun Ġpause () Ġ= ĠUnit Ċ // Ġ Ġoverride Ġfun Ġstop () Ġ= ĠUnit Ċ // Ġ Ġoverride Ġfun Ġseek To ( pos : ĠM illis ) Ġ= ĠUnit Ċ // Ġ Ġoverride Ġfun Ġfast Forward () Ġ= ĠUnit Ċ // Ġ Ġoverride Ġfun Ġskip To Next () Ġ= ĠUnit Ċ // Ġ Ġoverride Ġfun Ġre wind () Ġ= ĠUnit Ċ // Ġ Ġoverride Ġfun Ġskip To Previous () Ġ= ĠUnit Ċ // Ġ Ġoverride Ġfun Ġset Rating ( rating : ĠStar Rating ) Ġ= ĠUnit Ċ // Ġ Ġoverride Ġfun Ġset Caption ing Enabled ( enabled : ĠBoolean ) Ġ= ĠUnit Ċ // Ġ Ġoverride Ġfun Ġset Repeat Mode ( mode : ĠRepeat Mode ) Ġ= ĠUnit Ċ // Ġ Ġoverride Ġfun Ġset Shuffle Mode ( mode : ĠSh uffle Mode ) Ġ= ĠUnit Ċ //} Ċ