package Ġcom . seag azer . lite player . widget Ċ Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ import Ġcom . seag azer . lite player . bean . I DataSource Ċ import Ġcom . seag azer . lite player . config . AspectRatio Ċ import Ġcom . seag azer . lite player . config . Float Size Ċ import Ġcom . seag azer . lite player . config . Player Type Ċ import Ġcom . seag azer . lite player . config . Render Type Ċ import Ġcom . seag azer . lite player . event . Player State Event Ċ import Ġcom . seag azer . lite player . event . Render State Event Ċ import Ġcom . seag azer . lite player . listener . Player StateChanged Listener Ċ import Ġcom . seag azer . lite player . listener . Player View Mode Changed Listener Ċ import Ġcom . seag azer . lite player . listener . Render StateChanged Listener Ċ import Ġcom . seag azer . lite player . pip . IF loat Window Ċ import Ġcom . seag azer . lite player . player . IP layer Ċ import Ġcom . seag azer . lite player . player . IP layer Core Ċ import Ġcom . seag azer . lite player . render . I Render Ċ Ċ /** Ċ Ġ* Ċ Ġ* ĠAuthor : ĠSe ag azer Ċ Ġ* ĠDate : Ġ 2 0 2 0 / 6 / 2 0 Ċ Ġ*/ Ċ interface ĠI Player View Ġ: ĠI Player Core Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠYou Ġshould Ġnot Ġcall Ġthis Ġmethod , Ġotherwise Ġyou Ġshould Ġhandle Ġall Ġstate Ġof Ġplayer . ĊĠĠĠĠ Ġ* ĠIf Ġyou Ġwant Ġto Ġlisten Ġplayer Ġstate , Ġyou Ġshould Ġcall Ġ{@ link Ġadd Player StateChanged Listener ( Player StateChanged Listener )} Ġinstead . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġregister Player State Observer ( live Data : ĠMutable LiveData < Player State Event >) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠYou Ġshould Ġnot Ġcall Ġthis Ġmethod , Ġotherwise Ġyou Ġshould Ġhandle Ġall Ġstate Ġof Ġrender Ġsurface . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġregister Render State Observer ( live Data : ĠMutable LiveData < Render State Event >) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġobserve Ġthe Ġevent Ġof Ġplayer Ġand Ġrender Ġalways Ġor Ġnot , Ġdefault Ġis Ġfalse . ĊĠĠĠĠ Ġ* ĠSet Ġtrue Ġso Ġyou Ġcan Ġget Ġthe Ġevents Ġwhen Ġactivity Ġis Ġin Ġbackground Ġlike Ġplay Ġin Ġfloat Window Ġmode . ĊĠĠĠĠ Ġ* Ġ@ param Ġobserve Fore ver ĠTrue Ġobserve Ġthe Ġevent Ġalways . ĠMore Ġinfo Ġfrom Ġ{ LiveData . observe Fore ver ()} ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Event Ob serve Fore ver ( observe Fore ver : ĠBoolean ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġa Ġlistener Ġto Ġlisten Ġthe Ġstate Ġchanged Ġof Ġplayer . ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠThe Ġlistener Ġto Ġlisten Ġplayer Ġstate . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Player StateChanged Listener ( listener : ĠPlayer StateChanged Listener ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġa Ġlistener Ġto Ġlisten Ġthe Ġstate Ġchanged Ġof Ġrender . ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠThe Ġlistener Ġto Ġlisten Ġrender Ġstate . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Render StateChanged Listener ( listener : ĠRender StateChanged Listener ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġa Ġlistener Ġto Ġlisten Ġthe Ġfullscreen , Ġauto Sensor Ġand Ġfloat Window Ġmode Ġchanged Ġof Ġrender . ĊĠĠĠĠ Ġ* Ġ@ param Ġlistener ĠThe Ġlistener Ġto Ġlisten Ġthis Ġmode Ġstate Ġchanged . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Player View Mode Changed Listener ( listener : ĠPlayer View Mode Changed Listener ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġa Ġtype Ġto Ġdisplay Ġthe Ġpicture Ġof Ġvideo . ĊĠĠĠĠ Ġ* Ġ@ param Ġrender Type ĠTYPE _ SURFACE _ VIEW Ġor ĠTYPE _ TEXTURE _ VIEW ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Render Type ( render Type : ĠRender Type ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġcustom Ġrender Ġview Ġto Ġplay Ġvideo . ĊĠĠĠĠ Ġ* ĠYou Ġshould Ġhandle Ġthe Ġvideo Ġsize Ġmeasure ( We Ġprovide ĠRender Measure Ġto Ġdo Ġthis Ġeasily ), Ġand Ġnotify Ġthe Ġsurface Ġstate Ġevent Ġto Ġplayer Ġby Ġyourself . ĊĠĠĠĠ Ġ* ĠYou Ġcan Ġget Ġa Ġsample Ġlike ĠRender Texture View Ġor ĠRender Surface View Ġfrom Ġthis Ġlibrary . ĊĠĠĠĠ Ġ* Ġ@ param Ġi Render ĠThe Ġrender Ġview Ġimplement ĠI Render Ġto Ġdisplay Ġvideo Ġpicture . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Custom Render ( i Render : ĠI Render ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġaspect Ratio Ġto Ġdisplay Ġthe Ġpicture Ġof Ġvideo . ĊĠĠĠĠ Ġ* Ġ@ param Ġaspect Ratio Ġ ĠAUTO , ĠOR IGIN , ĠF ILL , ĠST RET CH , ĠW _ 1 6 _ 9 , ĠW _ 4 _ 3 , ĠW _ 2 1 _ 9 ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset AspectRatio ( aspect Ratio : ĠAs pect Ratio ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġcore Ġplayer Ġto Ġdo Ġthe Ġplay Ġlogic . ĊĠĠĠĠ Ġ* Ġ@ param Ġplayer Type ĠTYPE _ EX O _ PLAYER , ĠTYPE _ IJ K _ PLAYER Ġor ĠTYPE _ MEDIA _ PLAYER ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Player Type ( player Type : ĠPlayer Type ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġcustom Ġplayer Ġlogic Ġimplement ĠI Player Ġby Ġyourself . ĊĠĠĠĠ Ġ* ĠThe Ġplayer Type Ġis ĠTYPE _ CUSTOM _ PLAYER . ĊĠĠĠĠ Ġ* Ġ@ param Ġi Player ĠThe Ġcustom Ġplayer ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Custom Player ( i Player : ĠI Player ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġa Ġplayer Ġcore Ġinstance . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġinstance Ġof Ġplayer Ġcore . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Player (): ĠI Player ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġa Ġrender Ġinstance . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġinstance Ġof Ġrender . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Render (): ĠI Render ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAttach Ġan Ġoverlay Ġto Ġcontrol Ġthe Ġplayer . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontroller ĠI Controller Ġto Ġbe Ġattached . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġattach Media Controller ( controller : ĠI Controller ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAttach Ġan Ġoverlay Ġto Ġshow Ġthe Ġtitle Ġof Ġplayer . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtop bar ĠI Top bar Ġto Ġbe Ġattached . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġattach Media Top bar ( top bar : ĠI Top bar ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAttach Ġan Ġoverlay Ġto Ġhandle Ġthe Ġgesture Ġto Ġcontrol Ġplayer . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġgesture Overlay ĠI Gesture Ġto Ġbe Ġattached . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġattach Gesture Controller ( gesture Overlay : ĠI Gesture ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAttach Ġa Ġcustom Ġoverlay Ġto Ġdo Ġsomething Ġwhen Ġplaying . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġoverlay ĠI Overlay Ġto Ġbe Ġattached . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġattach Overlay ( overlay : ĠI Overlay ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAttach Ġa Ġfloat Ġwindow Ġto Ġhandle Ġfloat Ġwindow Ġdisplay Ġmode . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfloat Window ĠFloat Window Ġto Ġbe Ġattached . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġattach Float Window ( float Window : ĠI Float Window ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġcurrent Ġplaying Ġdata Ġsource . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġcurrent Ġplaying Ġdata Ġsource . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget DataSource (): ĠI DataSource ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġvisibility Ġof Ġinner Ġprogress bar . ĊĠĠĠĠ Ġ* Ġ@ param Ġshow Progress ĠTrue Ġshow , Ġfalse Ġhide . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdisplay Progress ( show Progress : ĠBoolean ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġcolor Ġof Ġinner Ġprogress bar . ĊĠĠĠĠ Ġ* Ġ@ param Ġprogress Color ĠColor Ġof Ġprogress . ĊĠĠĠĠ Ġ* Ġ@ param Ġsecond Progress Color ĠColor Ġof Ġsecond Ġprogress . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Progress Color ( progress Color : ĠInt , Ġsecond Progress Color : ĠInt ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEnter Ġor Ġexit Ġfullscreen . ĊĠĠĠĠ Ġ* Ġ@ param Ġis FullScreen ĠTrue Ġenter Ġfullscreen , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset FullScreen Mode ( is FullScreen : ĠBoolean ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCheck Ġcurrent Ġstate Ġis Ġfullscreen Ġor Ġnot . ĊĠĠĠĠ Ġ* Ġ@ return ĠTrue Ġfullscreen , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis FullScreen (): ĠBoolean ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEnter Ġor Ġexit Ġfloat Ġwindow . ĊĠĠĠĠ Ġ* Ġ@ param Ġis Float Window ĠTrue Ġenter Ġfloat Ġwindow , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Float Window Mode ( is Float Window : ĠBoolean ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCheck Ġcurrent Ġstate Ġis Ġfloat Ġwindow Ġor Ġnot . ĊĠĠĠĠ Ġ* Ġ@ return ĠTrue Ġfloat Ġwindow , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Float Window (): ĠBoolean ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġauto Ġenter Ġor Ġexit Ġfullscreen Ġmode Ġby Ġsensor . ĊĠĠĠĠ Ġ* Ġ@ param Ġenable ĠTrue Ġenable , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Auto Sensor Enable ( enable : ĠBoolean ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġdecode Ġmode . ĊĠĠĠĠ Ġ* Ġ@ param Ġsoftware Decode ĠTrue Ġsoftware Ġdecode , Ġfalse Ġmedi ac ode c Ġdecode ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsupport Software Decode ( software Decode : ĠBoolean ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġfloat Ġwindow Ġsize . ĊĠĠĠĠ Ġ* Ġ@ param Ġsize Mode ĠFloat Size . NORMAL Ġor ĠFloat Size . LARGE ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Float Size Mode ( size Mode : ĠFloat Size ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġrepeat Ġplay Ġwhen Ġcompleted Ġor Ġnot . ĊĠĠĠĠ Ġ* Ġ@ param Ġrepeat ĠTrue Ġreplay Ġafter Ġcompleted , Ġfalse Ġstop Ġafter Ġcompleted . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Repeat Mode ( repeat : ĠBoolean ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġauto Ġpause Ġplay Ġwhen Ġaudio Ġfocus Ġloss Ġor Ġnot , Ġdefault Ġis Ġtrue . ĊĠĠĠĠ Ġ* Ġ@ param Ġauto Paused ĠTrue Ġauto Ġpause Ġwhen Ġaudio Ġfocus Ġloss , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġset Auto Paused When Audio Focus Loss ( auto Paused : ĠBoolean ) Ċ Ċ }