package Ġcn . v ove 7 . andro _ accessibility _ api . view node Ċ Ċ import Ġandroid . graphics . Point Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . View Configuration Ċ import Ġandroid . view . accessibility . Accessibility NodeInfo Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġcn . v ove 7 . andro _ accessibility _ api . api . swipe Ċ import Ġcn . v ove 7 . andro _ accessibility _ api . utils . Screen Adapter Ċ import Ġcn . v ove 7 . andro _ accessibility _ api . view finder . View Find Builder Ċ import Ġjava . lang . Thread . sleep Ċ Ċ /** Ċ Ġ* Ġ è§ĨåĽ¾ èĬĤçĤ¹ Ċ Ġ* Ġ@ property Ġnode Ġ æĹł éļľ ç¢ į è§ĨåĽ¾ èĬĤçĤ¹ Ċ Ġ*/ Ċ @ Suppress (" Member Visibility Can Be Private ") Ċ class ĠView Node ( val Ġnode : ĠAccessibility NodeInfo ) Ġ: ĠView Operation , ĠComparable < View Node > Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æĸĩæľ¬ çĽ¸ ä¼¼ åº¦ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġsimilarity Text : ĠFloat Ġ= Ġ 0 f ĊĊĠĠĠ Ġprivate Ġvar Ġchildren Cache : ĠArray < View Node >? Ġ= Ġnull ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġvar ĠTR Y _ OP _ NUM Ġ= Ġ 1 0 ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠROOT _ TAG Ġ= Ġ" View Node Root " ĊĊĠĠĠĠĠĠĠ Ġfun Ġwith Children ( cs : ĠList < View Node >): ĠView Node Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot Ġ= ĠAccessibility NodeInfo . obtain () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot . className Ġ= Ġ"${ ROOT _ TAG }[ Win ĠSize : Ġ${ cs . size }] " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠView Node ( root ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . children Cache Ġ= Ġcs . to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġid : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġnode . view Id ResourceName ĊĊĠĠĠ Ġoverride Ġval Ġbounds In Parent : ĠRect ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Ġ= ĠRect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode . get Bounds In Parent ( out ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġout ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġval Ġbounds : ĠRect ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġout Ġ= ĠRect () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode . get Bounds In Screen ( out ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġout ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġparent : ĠView Node ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġit Ġ= Ġnode . parent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( it Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠView Node ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtry Click (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Op ( Accessibility NodeInfo . ACTION _ CLICK ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġglobal Click (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . N ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// èİ·å¾Ĺ ä¸Ńå¿ĥ çĤ¹ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrel p Ġ= ĠScreen Adapter . get Rel Point ( get Center Point ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcn . v ove 7 . andro _ accessibility _ api . api . click ( re lp . x , Ġrel p . y ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å°Ŀè¯ķ æĵįä½ľ æ¬¡æķ° ĊĠĠĠĠ Ġ* Ġ çĤ¹åĩ» ï¼Į éķ¿ æĮī ï¼Į éĢīæĭ© ĊĠĠĠĠ Ġ* Ġ å°Ŀè¯ķ çĤ¹åĩ» çĪ¶ çº§ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġtry Op ( action : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġp Ġ= Ġnode ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< ĠTR Y _ OP _ NUM Ġ&& Ġ! p . perform Action ( action )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( p . parent ?. also Ġ{ Ġp Ġ= Ġit Ġ} Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġi Ġ!= ĠTR Y _ OP _ NUM ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġchildren : ĠArray < View Node > ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( children Cache Ġ!= Ġnull ) Ġ{// 1 0 s æľīæķĪ æľŁ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġchildren Cache Ġ?: Ġempty Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ( 0 Ġuntil Ġnode . child Count ). map NotNull Ġ{ Ġi Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode . getChild ( i )?. let Ġ{ ĠView Node ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. to Typed Array (). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchildren Cache Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Child Count (): ĠInt Ġ= Ġnode . child Count ĊĊĊĠĠĠ Ġoverride Ġfun Ġchild At ( i : ĠInt ): ĠView Node ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcn Ġ= Ġnode . getChild ( i ) ĊĠĠĠĠĠĠĠ Ġif Ġ( cn Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠView Node ( cn ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclick (): ĠBoolean Ġ= Ġnode . perform Action ( Accessibility NodeInfo . ACTION _ CLICK ) ĊĊĠĠĠ Ġoverride Ġfun Ġdouble Click (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( try Click ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsleep (( View Configuration . getDouble Tap Timeout () Ġ+ Ġ 5 0 ). to Long ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Click () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtry Long Click (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Op ( Accessibility NodeInfo . ACTION _ LONG _ CLICK ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlong Click (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnode . perform Action ( Accessibility NodeInfo . ACTION _ LONG _ CLICK ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġselect (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnode . perform Action ( Accessibility NodeInfo . ACTION _ SELECT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Selection ( start : ĠInt , Ġend : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġargs . put Int ( Accessibility NodeInfo . ACTION _ ARGUMENT _ SELECTION _ START _ INT , Ġstart ) ĊĠĠĠĠĠĠĠ Ġargs . put Int ( Accessibility NodeInfo . ACTION _ ARGUMENT _ SELECTION _ END _ INT , Ġend ) ĊĠĠĠĠĠĠĠ Ġreturn Ġnode . perform Action ( Accessibility NodeInfo . ACTION _ SET _ SELECTION , Ġargs ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear Selection (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnode . perform Action ( Accessibility NodeInfo . ACTION _ CLEAR _ SELECTION ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġtry Select (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Op ( Accessibility NodeInfo . ACTION _ SELECT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġscroll Up (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode . perform Action ( Accessibility NodeInfo . Accessibility Action . ACTION _ SCROLL _ UP . id ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġscroll Down (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode . perform Action ( Accessibility NodeInfo . Accessibility Action . ACTION _ SCROLL _ DOWN . id ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġscroll Forward (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnode . perform Action ( Accessibility NodeInfo . Accessibility Action . ACTION _ SCROLL _ FORWARD . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġscroll Backward (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnode . perform Action ( Accessibility NodeInfo . Accessibility Action . ACTION _ SCROLL _ BACK WARD . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġscroll Left (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode . perform Action ( Accessibility NodeInfo . Accessibility Action . ACTION _ SCROLL _ LEFT . id ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġscroll Right (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode . perform Action ( Accessibility NodeInfo . Accessibility Action . ACTION _ SCROLL _ RIGHT . id ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġtext : ĠCharSequence ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode . refresh () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnode . text ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( v ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġarg Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarg . put CharSequence ( Accessibility NodeInfo . ACTION _ ARGUMENT _ SET _ TEXT _ CHAR SEQUENCE , Ġv ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode . perform Action ( Accessibility NodeInfo . ACTION _ SET _ TEXT , Ġarg ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġhint Text : ĠCharSequence ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode . hint Text ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . O ) ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode . hint Text Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdesc (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnode . content Description ?. toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġappend Text ( s : ĠCharSequence ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( text ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( s ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġtry SetText ( text : ĠCharSequence ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġarg Ġ= ĠBundle () ĊĠĠĠĠĠĠĠ Ġarg . put CharSequence ( Accessibility NodeInfo . ACTION _ ARGUMENT _ SET _ TEXT _ CHAR SEQUENCE , Ġtext ) ĊĠĠĠĠĠĠĠ Ġvar Ġp Ġ= Ġnode ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< ĠTR Y _ OP _ NUM Ġ&& Ġ! p . perform Action ( Accessibility NodeInfo . ACTION _ SET _ TEXT , Ġarg )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp Ġ= Ġnode . parent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġb Ġ= Ġi Ġ!= ĠTR Y _ OP _ NUM ĊĠĠĠĠĠĠĠ Ġreturn Ġb ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Center Point (): ĠPoint Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrect Ġ= Ġbounds ĊĠĠĠĠĠĠĠ Ġval Ġx Ġ= Ġ( rect . left Ġ+ Ġrect . right ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġval Ġy Ġ= Ġ( rect . top Ġ+ Ġrect . bottom ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠ Ġreturn ĠPoint ( x , Ġy ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . N ) ĊĠĠĠ Ġoverride Ġfun Ġswipe ( dx : ĠInt , Ġdy : ĠInt , Ġdelay : ĠInt ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġc Ġ= ĠScreen Adapter . get Rel Point ( get Center Point ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġswipe ( c . x , Ġc . y , Ġc . x Ġ+ Ġdx , Ġc . y Ġ+ Ġdy , Ġdelay ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfocus (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnode . perform Action ( Accessibility NodeInfo . ACTION _ FOCUS ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear Focus (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnode . perform Action ( Accessibility NodeInfo . ACTION _ CLEAR _ FOCUS ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcompare To ( other : ĠView Node ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ(( other . similarity Text Ġ- Ġsimilarity Text ) Ġ* Ġ 1 0 0 ). toInt () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnode Summary ( node ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsort Out Info (): ĠView Info Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠView Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtext , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode . content Description , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass Type , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbounds In Parent , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbounds Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode . is Clickable , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnode . can Open Popup () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠclassName Ġget () Ġ= Ġclass Type ĊĊĠĠĠ Ġval Ġclass Type : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġnode . className . let Ġ{ Ġit . substring ( it . lastIndexOf ('.') Ġ+ Ġ 1 ) Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġnode Summary ( node : ĠAccessibility NodeInfo ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġnode . view Id ResourceName ĊĠĠĠĠĠĠĠ Ġval Ġdesc Ġ= Ġnode . content Description ĊĊĠĠĠĠĠĠĠ Ġreturn Ġ"{ Ġclass : Ġ" Ġ+ Ġclass Type Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( id Ġ== Ġnull ) Ġ"" Ġelse Ġ", Ġid : Ġ" Ġ+ Ġid . substring ( id . lastIndexOf ('/') Ġ+ Ġ 1 )) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( node . text Ġ== Ġnull ) Ġ"" Ġelse Ġ", Ġtext : Ġ${ node . text }") Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( hint Text Ġ== Ġnull ) Ġ"" Ġelse Ġ", Ġhint Text : Ġ$ hint Text ") Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( desc Ġ== Ġnull ) Ġ"" Ġelse Ġ", Ġdesc : Ġ$ desc ") Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( ", Ġbounds : Ġ$ bounds " Ġ+ Ġ", Ġchild Count : Ġ${ getChild Count () }") Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( node . is Clickable ) Ġ", ĠClick able " Ġelse Ġ"") Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( node . isSelected ) Ġ", ĠSelected " Ġelse Ġ"") Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ(! node . isVisible To User ) Ġ", ĠIn VisibleTo User " Ġelse Ġ"") Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ(! node . isEnabled ) Ġ", ĠDisabled " Ġelse Ġ"") Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( node . is Password ) Ġ", ĠPassword " Ġelse Ġ"") Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( node . isChecked ) Ġ", ĠChecked " Ġelse Ġ"") Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( if Ġ( node . is Dismiss able ) Ġ", ĠDis miss able " Ġelse Ġ"") Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ġ}" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġä»İ è¯¥ èĬĤçĤ¹ æĲľç´¢ ĊĠĠĠĠ Ġ* Ġ@ return ĠView Find Builder ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġfinder (): ĠView Find Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠView Find Builder ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġvar Ġis VisibleTo User : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( className ?. startsWith ( ROOT _ TAG ) Ġ== Ġtrue ) Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġnode . isVisible To User ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnode . isVisible To User Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Clickable (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnode . is Clickable ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrefresh (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( className ?. startsWith ( ROOT _ TAG ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchildren Cache Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnode . refresh () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġaction List : ĠList < Accessibility NodeInfo . Accessibility Action > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġnode . action List Ċ Ċ } Ċ