package Ġcom . ang cy o . acc 2 . action Ċ Ċ import Ġandroidx . core . view . accessibility . Accessibility NodeInfo Compat Ċ import Ġcom . ang cy o . acc 2 . control . Acc Control Ċ import Ġcom . ang cy o . acc 2 . control . Acc Schedule Ċ import Ġcom . ang cy o . acc 2 . control . Control Context Ċ import Ġcom . ang cy o . acc 2 . parse . Handle Result Ċ import Ġcom . ang cy o . acc 2 . parse . arg Ċ import Ġcom . ang cy o . acc 2 . parse . to Log Ċ import Ġcom . ang cy o . library . ex .* Ċ Ċ /** Ċ Ġ* ĠEmail : ang cy o @ 1 2 6 . com Ċ Ġ* Ġ@ author Ġang cy o Ċ Ġ* Ġ@ date Ġ 2 0 2 0 / 0 9 / 2 1 Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 ĠSh en Z hen ĠWay to ĠLtd . ĠAll Ġrights Ġreserved . Ċ Ġ*/ Ċ class ĠInput Action Ġ: ĠBase Action () Ġ{ ĊĊĠĠĠ Ġ/** è®°å½ķ æĸĩæľ¬ key è¾ĵåħ¥ çļĦ æ¬¡æķ° , Ġ çĶ¨äºİ æī§è¡Į [ com . ang cy o . acc 2 . action . Action . ORDER ] */ ĊĠĠĠ Ġval Ġinput Count Map Ġ= Ġhash Map Of < String , ĠInt >() ĊĊĠĠĠ Ġoverride Ġfun Ġintercept Action ( control : ĠAcc Control , Ġaction : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġaction . cmd ( Action . ACTION _ INPUT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Cmd ( action : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( action . startsWith ( Action . ACTION _ INPUT )) ĠAction . ACTION _ INPUT Ġelse ĠAction . ACTION _ SET _ TEXT ĊĊĠĠĠ Ġoverride Ġfun Ġon Schedule Start ( scheduled : ĠAcc Schedule ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Schedule Start ( scheduled ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Schedule End ( scheduled : ĠAcc Schedule ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Schedule End ( scheduled ) ĊĠĠĠĠĠĠĠ Ġinput Count Map . clear () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrun Action ( ĊĠĠĠĠĠĠĠ Ġcontrol : ĠAcc Control , ĊĠĠĠĠĠĠĠ Ġcontrol Context : ĠControl Context , ĊĠĠĠĠĠĠĠ Ġnode List : ĠList < Accessibility NodeInfo Compat > ?, ĊĠĠĠĠĠĠĠ Ġaction : ĠString ĊĠĠĠ Ġ): ĠHandle Result Ġ= Ġhandle Result Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġarg Ġ= Ġaction . sub End ( Action . ARG _ SPLIT ) ĊĠĠĠĠĠĠĠ Ġval Ġtext Parse Ġ= Ġcontrol . acc Schedule . acc Parse . text Parse ĊĊĠĠĠĠĠĠĠ Ġvar Ġtext Key : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġinput Count Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġ// æĸĩæľ¬ åĪĹè¡¨ çļĦ æķ°éĩı ĊĠĠĠĠĠĠĠ Ġvar Ġtext List Size Ġ= Ġ- 1 ĊĊĠĠĠĠĠĠĠ Ġ// æī§è¡Į set Ġtext æĹ¶çļĦ æĸĩæľ¬ ĊĠĠĠĠĠĠĠ Ġval Ġtext Ġ= Ġif Ġ( arg . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrandom String () Ġ// éļıæľº çĶŁæĪĲ æĸĩæľ¬ ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĮĩå®ļ key , Ġ æĸĩæľ¬ å·²ç»ı è¾ĵåħ¥ çļĦ æ¬¡æķ° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext Key Ġ= Ġtext Parse . parse Text Key ( arg ). first OrNull () Ġ?: Ġaction . arg (" key ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text Key . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Key Ġ= Ġcontrol . acc Schedule ._ schedule Action Bean ?. action Id ?. toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! text Key . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Count Ġ= Ġinput Count Map [ text Key ] Ġ?: Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĮĩå®ļ èİ·åıĸ æĸĩæľ¬ çļĦ index ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Arg Ġ= Ġarg . arg (" index ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġinput Arg Ġ= Ġarg ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġindex Text : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! index Arg . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Text Ġ= Ġtext Parse . parse ( index Arg ). first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Arg Ġ= Ġarg . replace ( index Arg , Ġ"") // æ¸ħ éĻ¤ index åıĤæķ° ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// å¾ħ è¾ĵåħ¥ çļĦ æĸĩæľ¬ æ±ł ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinput Text List Ġ= Ġtext Parse . parse ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Arg , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Handle Text Param Bean By Action ( get Cmd ( action )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext List Size Ġ= Ġinput Text List . size () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// èİ·åıĸ çĽ®æłĩ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Text . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æľª æĮĩå®ļ index , Ġ éļıæľº è¿ĶåĽŀ ä¸Ģä¸ª ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Context . log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" éļıæľº èİ·åıĸ è¾ĵåħ¥ æĸĩæľ¬ :$ input Text List ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Text List . random Get ( 1 ). first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( index Text Ġ== ĠAction . ORDER ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĮī é¡ºåºı è¿ĶåĽŀ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Context . log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" é¡ºåºı èİ·åıĸ è¾ĵåħ¥ æĸĩæľ¬ ç¬¬ ${ input Count } ä¸ª :$ input Text List ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Text List . get Safe ( input Count ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġindex Ġ= Ġindex Text . toInt OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( index Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// åħ¶ä»ĸ æĹłæ³ķ è¯ĨåĪ« çļĦ æĸĩæľ¬ åĨħå®¹ , Ġ éļıæľº èİ·åıĸ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Context . log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" éļıæľº èİ·åıĸ è¾ĵåħ¥ æĸĩæľ¬ , æĹł æķĪ åıĤæķ° [ ${ index Text } ]: $ input Text List ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Text List . random Get ( 1 ). first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĮĩå®ļ äºĨ index ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Context . log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" æĮĩå®ļ èİ·åıĸ è¾ĵåħ¥ æĸĩæľ¬ ç´¢å¼ķ ç¬¬ ${ input Count } ä¸ª :$ input Text List ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Text List . get Safe ( index ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// save ĊĠĠĠĠĠĠĠ Ġcontrol . acc Schedule . input Text List . add ( text ) ĊĊĠĠĠĠĠĠĠ Ġnode List ?. forEach Ġ{ Ġnode Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġnode . set Node Text ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess Ġ= Ġresult Ġ|| Ġsuccess ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! text Key . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġinput Count Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ä¿ĿåŃĺ è¾ĵåħ¥ æ¬¡æķ° ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinput Count Map [ text Key ] Ġ= Ġcount ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( text List Size Ġin Ġ 1 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// æĸĩæľ¬ è¾ĵåħ¥ ç»ĵæĿŁ åĲİ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Context . handle ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhandle Parse Ġ= Ġcontrol . acc Schedule . acc Parse . handle Parse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Parse . on TextInput End ( it , Ġcontrol Context , Ġnode List , Ġaction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontrol Context . log Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" è¾ĵåħ¥ æĸĩæľ¬ [$ text ]: $ result \ n ${ node . to Log () }") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }