package Ġcom . bu il tt oro am . multiple _ screens Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Context . SENSOR _ SERVICE Ċ import Ġandroid . hardware . Sensor Ċ import Ġandroid . hardware . Sensor Event Ċ import Ġandroid . hardware . Sensor EventListener Ċ import Ġandroid . hardware . Sensor Manager Ċ import Ġandroid . view . View Ċ import Ġandroid . view . View . On Layout ChangeListener Ċ import Ġandroidx . annotation . NonNull Ċ import Ġcom . bu il tt oro am . multiple _ screens . models . H inge Ċ import Ġcom . google . gson . Gson Ċ import Ġcom . google . gson . Gson Builder Ċ import Ġcom . microsoft . device . display . Display Mask Ċ import Ġio . flutter . embedding . engine . plugins . Flutter Plugin Ċ import Ġio . flutter . embedding . engine . plugins . activity . Activity Aware Ċ import Ġio . flutter . embedding . engine . plugins . activity . Activity Plugin Binding Ċ import Ġio . flutter . plugin . common . Binary Messenger Ċ import Ġio . flutter . plugin . common . Event Channel Ċ import Ġio . flutter . plugin . common . Event Channel . Event Sink Ċ import Ġio . flutter . plugin . common . MethodCall Ċ import Ġio . flutter . plugin . common . Method Channel Ċ import Ġio . flutter . plugin . common . Method Channel . MethodCall Handler Ċ import Ġio . flutter . plugin . common . Method Channel . Result Ċ import Ġio . flutter . plugin . common . Plugin Registry . Registrar ĊĊ Ċ /** ĠMultiple Scre ens Plugin Ġ*/ Ċ class ĠMultiple Scre ens Plugin Ġ: ĊĠĠĠ ĠFlutter Plugin , ĊĠĠĠ ĠMethod Call Handler , ĊĠĠĠ ĠEvent Channel . Stream Handler , ĊĠĠĠ ĠActivity Aware Ġ{ ĊĠĠĠ Ġprivate Ġval ĠMETHOD _ CHANNEL _ NAME Ġ= Ġ" plugins . bu il tt oro am . com / multiple _ screens / methods " ĊĠĠĠ Ġprivate Ġval ĠEVENT _ CHANNEL _ NAME Ġ= Ġ" plugins . bu il tt oro am . com / multiple _ screens / events " ĊĠĠĠ Ġprivate Ġval ĠDISPLAY _ MASK _ SYSTEM _ FEATURE Ġ= Ġ" com . microsoft . device . display . display mask " ĊĠĠĠ Ġprivate Ġval ĠIS _ MULTIPLE _ SCREEN S _ DEVICE Ġ= Ġ" is Multiple Scre ens Device " ĊĠĠĠ Ġprivate Ġval ĠIS _ APP _ SPAN N ED Ġ= Ġ" is App Sp anned " ĊĠĠĠ Ġprivate Ġval ĠGET _ H INGE Ġ= Ġ" get H inge " ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġmethod Channel : ĠMethod Channel ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġevent Channel : ĠEvent Channel ĊĠĠĠ Ġprivate Ġvar Ġcontext : ĠContext ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġactivity : ĠActivity ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġgson : ĠGson ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval ĠH INGE _ ANGLE _ SENSOR _ NAME Ġ= Ġ" H inge ĠAngle " ĊĠĠĠ Ġprivate Ġvar Ġsensor Manager : ĠSensor Manager ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġh inge Angle Sensor : ĠSensor ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġsensor Listener : ĠSensor EventListener ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġh inge : ĠH inge Ġ= ĠH inge () ĊĊĠĠĠ Ġfun Ġregister Plugin ( context : ĠContext ?, Ġmess enger : ĠBinary Messenger ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . context Ġ= Ġcontext ĊĠĠĠĠĠĠĠ Ġthis . method Channel Ġ= ĠMethod Channel ( messenger , ĠMETHOD _ CHANNEL _ NAME ) ĊĠĠĠĠĠĠĠ Ġthis . method Channel . set MethodCall Handler ( this ) ĊĠĠĠĠĠĠĠ Ġthis . event Channel Ġ= ĠEvent Channel ( messenger , ĠEVENT _ CHANNEL _ NAME ) ĊĠĠĠĠĠĠĠ Ġthis . event Channel . set Stream Handler ( this ) ĊĊĠĠĠĠĠĠĠ Ġgson Ġ= ĠGson Builder (). create () ĊĠĠĠĠĠĠĠ Ġsetup Sensors () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To Engine (@ NonNull Ġbinding : ĠFlutter Plugin . Flutter Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . register Plugin ( binding . application Context , Ġbinding . binary Messenger ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġregister With ( regist rar : ĠRegist rar ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMultiple Scre ens Plugin (). register Plugin ( regist rar . context (), Ġregist rar . messenger ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon MethodCall (@ NonNull Ġcall : ĠMethod Call , Ġ@ NonNull Ġresult : ĠResult ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( call . method ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIS _ MULTIPLE _ SCREEN S _ DEVICE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( is Multiple Scre ens Device ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIS _ APP _ SPAN N ED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( is App Sp anned ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGET _ H INGE Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . success ( gson ?. toJson ( h inge )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult . not Implemented () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Listen ( arguments : ĠAny ?, Ġevents : ĠEvent Sink ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity ?. window ?. decor View ?. root View ?. add On Layout ChangeListener ( object Ġ: ĠOn Layout ChangeListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Layout Change ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġv : ĠView ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġleft : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtop : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġright : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbottom : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Left : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Top : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Right : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Bottom : ĠInt ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġevents ?. success ( is App Sp anned ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Cancel ( arguments : ĠAny ?) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Attached To Activity ( binding : ĠActivity Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Ġ= Ġbinding . activity ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Re attached To Activity For Config Changes ( binding : ĠActivity Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Ġ= Ġbinding . activity ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Activity For Config Changes () Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Activity () Ġ{ ĊĠĠĠĠĠĠĠ Ġactivity Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Multiple Scre ens Device (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpackage Manager Ġ= Ġcontext ?. package Manager ĊĠĠĠĠĠĠĠ Ġif Ġ( package Manager Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpackage Manager . has System Feature ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDISPLAY _ MASK _ SYSTEM _ FEATURE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis App Sp anned (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Multiple Scre ens Device ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbounding Ġ= ĠDisplay Mask . from Resources Rect Approx imation ( activity ). bounding Rects ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bounding . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdrawing Rect Ġ= Ġandroid . graphics . Rect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity ?. window ?. decor View ?. root View ?. get Drawing Rect ( drawing Rect ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġbounding . first (). intersect ( drawing Rect ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Detached From Engine (@ NonNull Ġbinding : ĠFlutter Plugin . Flutter Plugin Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġmethod Channel . set MethodCall Handler ( null ) ĊĠĠĠĠĠĠĠ Ġevent Channel . set Stream Handler ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Sensors () Ġ{ ĊĠĠĠĠĠĠĠ Ġsensor Manager Ġ= Ġcontext ?. getSystem Service ( SENSOR _ SERVICE ) Ġas ĠSensor Manager ? ĊĠĠĠĠĠĠĠ Ġval Ġsensor List Ġ= Ġsensor Manager !!. get Sensor List ( Sensor . TYPE _ ALL ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( sensor Ġin Ġsensor List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sensor . name . contains ( H INGE _ ANGLE _ SENSOR _ NAME )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh inge Angle Sensor Ġ= Ġsensor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsensor Listener Ġ= Ġobject Ġ: ĠSensor EventListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Sensor Changed ( event : ĠSensor Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event . sensor Ġ== Ġh inge Angle Sensor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh inge . angle Ġ= Ġevent . values [ 0 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Accuracy Changed ( sensor : ĠSensor , Ġaccuracy : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġh inge . accuracy Ġ= Ġaccuracy ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġsensor Manager !!. register Listener ( sensor Listener , Ġh inge Angle Sensor , ĠSensor Manager . SENSOR _ DELAY _ NORMAL ) ĊĠĠĠ Ġ} Ċ } Ċ