package Ġtop . ni un ai jun . black box a . app . ro cker Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . app . Application Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Gravity Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroid . widget . Relative Layout Ċ import Ġcom . im ux uan . floating view . Floating Mag net View Ċ import Ġcom . im ux uan . floating view . Floating View Ċ import Ġtop . ni un ai jun . black box . entity . location . B Location Ċ import Ġtop . ni un ai jun . black box . fake . frameworks . B Location Manager Ċ import Ġtop . ni un ai jun . black box a . app . App Ċ import Ġtop . ni un ai jun . black box a . widget . En Float View Ċ import Ġkotlin . math . cos Ċ import Ġkotlin . math . sin Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ġ@ Description : Ċ Ġ* Ġ@ Author : Ġkotlin M iku Ċ Ġ* Ġ@ Create Date : Ġ 2 0 2 2 / 3 / 1 9 Ġ 1 9 : 3 7 Ċ Ġ*/ Ċ object ĠR ocker Manager Ġ{ ĊĊĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" R ocker Manager " ĊĊĊĠĠĠ Ġprivate Ġconst Ġval ĠE a Ġ= Ġ 6 3 7 8 1 3 7 ĠĠĠĠ Ġ// ĠĠ Ġ èµ ¤ éģĵ åįĬ å¾Ħ ĠĠĊĊĠĠĠ Ġprivate Ġconst Ġval ĠE b Ġ= Ġ 6 3 5 6 7 2 5 ĠĠĠĠ Ġ// ĠĠ Ġ æŀģ åįĬ å¾Ħ ĠĊĊĠĠĠ Ġfun Ġinit ( application : ĠApplication ?, ĠuserId : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( application Ġ== Ġnull Ġ|| Ġ! B Location Manager . is Fake Location Enable ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġen Float View Ġ= Ġinit Float View () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( en Float View Ġis ĠEn Float View ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġen Float View . set Listener Ġ{ Ġangle : ĠFloat , Ġdistance : ĠFloat Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchange Location ( distance , Ġangle , Ġapplication . packageName , userId ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġapplication . register Activity Lifecycle Callbacks ( object Ġ: ĠBase Activity Lifecycle Callback Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Started ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Activity Started ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFloating View . get (). attach ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Activity Stopped ( activity : ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Activity Stopped ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFloating View . get (). detach ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Float View (): ĠFloating Mag net View ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= ĠFrame Layout . LayoutParams ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRelative Layout . LayoutParams . WRAP _ CONTENT , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRelative Layout . LayoutParams . WRAP _ CONTENT ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġparams . gravity Ġ= ĠGr avity . START Ġor ĠGr avity . CENTER ĊĠĠĠĠĠĠĠ Ġval Ġview Ġ= ĠEn Float View ( App . getContext ()) ĊĠĠĠĠĠĠĠ Ġview . layout Params Ġ= Ġparams ĊĊĠĠĠĠĠĠĠ ĠFloating View . get (). custom View ( view ) ĊĊĠĠĠĠĠĠĠ Ġreturn ĠFloating View . get (). view ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġchange Location ( distance : ĠFloat , Ġangle : ĠFloat , ĠpackageName : ĠString , ĠuserId : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġlocation Ġ= ĠB Location Manager . get (). getLocation ( userId , ĠpackageName ) ĊĊĠĠĠĠĠĠĠ Ġval Ġdx Ġ= Ġdistance Ġ Ġ* Ġsin ( angle Ġ* ĠMath . PI Ġ/ Ġ 1 8 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġval Ġdy Ġ= Ġdistance Ġ Ġ* Ġcos ( angle Ġ* ĠMath . PI Ġ/ Ġ 1 8 0 . 0 ) ĊĊĊĠĠĠĠĠĠĠ Ġval Ġec Ġ= ĠE b Ġ+ Ġ( Ea Ġ- ĠE b ) Ġ* Ġ( 9 0 . 0 Ġ- Ġlocation . latitude ) Ġ/ Ġ 9 0 . 0 ĊĠĠĠĠĠĠĠ Ġval Ġed Ġ= Ġec Ġ* Ġcos ( location . latitude Ġ* ĠMath . PI Ġ/ Ġ 1 8 0 ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Lng Ġ= Ġ( dx Ġ/ Ġed Ġ+ Ġlocation . longitude Ġ* ĠMath . PI Ġ/ Ġ 1 8 0 . 0 ) Ġ* Ġ 1 8 0 . 0 Ġ/ ĠMath . PI ĊĊĠĠĠĠĠĠĠ Ġval Ġnew Lat Ġ= Ġ( dy Ġ/ Ġec Ġ+ Ġlocation . latitude Ġ* ĠMath . PI Ġ/ Ġ 1 8 0 . 0 ) Ġ* Ġ 1 8 0 . 0 Ġ/ ĠMath . PI ĊĠĠĠĠĠĠĠ Ġval Ġnew Location Ġ= ĠB Location ( new Lat , Ġnew Lng ) ĊĊĠĠĠĠĠĠĠ ĠB Location Manager . get (). setLocation ( userId , ĠpackageName , Ġnew Location ) ĊĠĠĠ Ġ} ĊĊ Ċ }