package Ġno . reality lab . ar face Ċ Ċ import Ġandroid . app . Activity Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . google . ar . core . Ar Core A pk Ċ import Ġcom . google . ar . core . Aug ment ed Face Ċ import Ġcom . google . ar . core . Tracking State Ċ import Ġcom . google . ar . scene form . rendering . Render able Ċ import Ġcom . google . ar . scene form . rendering . Texture Ċ import Ġcom . google . ar . scene form . ux . Aug ment ed Face Node Ċ import Ġkotlinx . android . synt hetic . main . activity _ make up .* Ċ Ċ class ĠMake up Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMIN _ OPEN GL _ VERSION Ġ= Ġ 3 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlateinit Ġvar Ġar Fragment : ĠFace Ar Fragment ĊĠĠĠ Ġprivate Ġvar Ġface Mesh Texture : ĠTexture ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġface Node Map Ġ= ĠHashMap < Aug ment ed Face , ĠAug ment ed Face Node >() ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! check Is Supported Device Or Finish ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ make up ) ĊĠĠĠĠĠĠĠ Ġar Fragment Ġ= Ġface _ fragment Ġas ĠFace Ar Fragment ĊĠĠĠĠĠĠĠ ĠTexture . builder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Source ( this , ĠR . drawable . make up ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Accept Ġ{ Ġtexture Ġ-> Ġface Mesh Texture Ġ= Ġtexture Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġscene View Ġ= Ġar Fragment . ar Scene View ĊĠĠĠĠĠĠĠ Ġscene View . camera Stream Render Priority Ġ= ĠRender able . RENDER _ PRIORITY _ FIRST ĊĠĠĠĠĠĠĠ Ġval Ġscene Ġ= Ġscene View . scene ĊĊĠĠĠĠĠĠĠ Ġscene . add On Update Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġface Mesh Texture . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscene View . session ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . getAll Track ables ( Aug ment ed Face :: class . java )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( f Ġin Ġit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! face Node Map . containsKey ( f )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġface Node Ġ= ĠAug ment ed Face Node ( f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġface Node . setParent ( scene ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġface Node . face Mesh Texture Ġ= Ġface Mesh Texture ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġface Node Map . put ( f , Ġface Node ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRemove Ġany ĠAug ment ed Face Nodes Ġassociated Ġwith Ġan ĠAug ment ed Face Ġthat Ġstopped Ġtracking . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġiter Ġ= Ġface Node Map . entries . iterator () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( iter . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġentry Ġ= Ġiter . next () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġface Ġ= Ġentry . key ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( face . tracking State Ġ== ĠTracking State . STOP PED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġface Node Ġ= Ġentry . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġface Node . setParent ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġiter . remove () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcheck Is Supported Device Or Finish () Ġ: ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Ar Core A pk . getInstance (). check Availability ( this ) Ġ== ĠAr Core A pk . Availability . UNSUPPORTED _ DEVICE _ NOT _ CAP ABLE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Aug ment ed ĠF aces Ġrequires ĠAR Core ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġopen Gl Version String Ġ= Ġ Ġ( getSystem Service ( Context . ACTIVITY _ SERVICE ) Ġas ? ĠActivity Manager ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . device Configuration Info ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . gl Es Version ĊĊĠĠĠĠĠĠĠ Ġopen Gl Version String ?. let Ġ{ Ġs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( java . lang . Double . parseDouble ( open Gl Version String ) Ġ< ĠMIN _ OPEN GL _ VERSION ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" Scene form Ġrequires ĠOpenGL ĠES Ġ 3 . 0 Ġor Ġlater ", ĠToast . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ }