package Ġcom . ts iem ens . android script er . activity Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AppCompatActivity ; Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġcom . cha quo . python . Python Ċ import Ġcom . cha quo . python . android . Android Platform Ċ Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġandroid . app . Activity Manager Ċ import Ġandroid . content . Context Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġandroidx . local broadcast manager . content . Local Broadcast Manager Ċ import Ġandroid . widget . Button Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . media . projection . Media Projection Manager Ċ import Ġcom . ts iem ens . android script er .* Ċ import Ġcom . ts iem ens . android script er . overlay . Overlay Manager Ċ import Ġcom . ts iem ens . android script er . script . Script Log Manager Ċ import Ġcom . ts iem ens . android script er . service . Accessibility Setting Dialog Fragment Ċ import Ġcom . ts iem ens . android script er . service . Script Access Service Ċ Ċ private Ġclass ĠMy Receiver Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d (" My Receiver ", Ġ" on Receive ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠProt otype Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= ĠProt otype Activity :: class . java . simple Name ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġb cast Receiver Ġ: ĠBroadcast Receiver ? Ġ= ĠMy Receiver () ĊĠĠĠ Ġvar Ġprojection Manager Ġ: ĠMedia Projection Manager ? Ġ= Ġnull ĊĊĠĠĠ Ġval Ġlog Manager Ġ= ĠScript Log Manager () ĊĠĠĠ Ġval Ġoverlay Manager Ġ= ĠOverlay Manager ( ĊĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠ Ġlog Manager , ĊĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġtry Gu arante e Usage Stats Access ( this ) ĊĊĠĠĠĠĠĠĠ Ġprojection Manager Ġ= Ġget System Service ( Context . MEDIA _ PRO JECTION _ SERVICE ) Ġas ĠMedia Projection Manager ĊĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( view , Ġ" Clicked ĠF AB ", ĠSn ackbar . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAction (" Action ", Ġnull ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġstart Btn Ġ= ĠfindViewById < Button >( R . id . start _ button ) ĊĠĠĠĠĠĠĠ Ġval Ġstop Btn Ġ= ĠfindViewById < Button >( R . id . stop _ button ) ĊĊĠĠĠĠĠĠĠ Ġstart Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Helper Ġ= ĠData Util Helper ( this ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexample 1 Script Ġ= Ġdata Helper . get Asset Utf 8 Data (" example 1 . py ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" example 1 Script : Ġ$ example 1 Script ") Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠScript Driver ( this ). run Script ( example 1 Script ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtest B cast Btn Ġ= ĠfindViewById < Button >( R . id . test b cast _ button ) ĊĠĠĠĠĠĠĠ Ġtest B cast Btn . setOnClickListener Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠService B cast Client ( this ). send Run Script (" example 1 . py ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġtest O cr Btn Ġ= ĠfindViewById < Button >( R . id . ocr _ button ) ĊĠĠĠĠĠĠĠ Ġtest O cr Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Service B cast Client ( this ). send Do O cr () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠPER MISSION _ CODE Ġ= Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠstartActivity For Result ( projection Manager !!. create Screen Capture Intent (), ĠPER MISSION _ CODE ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠScreen Capture Image Activity :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġscript Activity Btn Ġ= ĠfindViewById < Button >( R . id . script _ activity _ button ) ĊĠĠĠĠĠĠĠ Ġscript Activity Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠScript Runner Activity :: class . java )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! is My Service Running ( Script Access Service :: class . java )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAccessibility Setting Dialog Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show ( support FragmentManager , Ġ"") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! Python . is Started ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPython . start ( Android Platform ( this )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ ĠLocal Broadcast Manager . getInstance ( this ). register Receiver ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb cast Receiver !! , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIntent Filter ( Script Access Service . ACTION _ FROM _ SERVICE ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( overlay Manager . per mitted To Show ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġoverlay Manager . show Overlay () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverlay Manager . launch Overlay Permissions Activity () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ ĠLocal Broadcast Manager . getInstance ( this ). unregister Receiver ( b cast Receiver !! ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġoverlay Manager . destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis My Service Running ( service Class : ĠClass < *> ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= Ġget System Service ( Context . ACTIVITY _ SERVICE ) Ġas ĠActivity Manager ĊĠĠĠĠĠĠĠ Ġfor Ġ( service Ġin Ġmanager . get Running Services ( Integer . MAX _ VALUE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( service Class . name Ġ== Ġservice . service . className ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġmenu ; Ġthis Ġadds Ġitems Ġto Ġthe Ġaction Ġbar Ġif Ġit Ġis Ġpresent . ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ main , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠHandle Ġaction Ġbar Ġitem Ġclicks Ġhere . ĠThe Ġaction Ġbar Ġwill ĊĠĠĠĠĠĠĠ Ġ// Ġautomatically Ġhandle Ġclicks Ġon Ġthe ĠHome / Up Ġbutton , Ġso Ġlong ĊĠĠĠĠĠĠĠ Ġ// Ġas Ġyou Ġspecify Ġa Ġparent Ġactivity Ġin ĠAndroid Manifest . xml . ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ settings Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ