package Ġfr . sm ar quis . ar _ toolbox Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Handler Thread Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . view . Pixel Copy Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Seek Bar Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . annotation . Color Int Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . content . File Provider Ċ import Ġcom . google . android . material . bottom sheet . Bottom Sheet Behavior Ċ import Ġcom . google . ar . core .* Ċ import Ġcom . google . ar . core . Camera Config . Depth Sensor Usage . DO _ NOT _ USE Ċ import Ġcom . google . ar . core . Camera Config . Depth Sensor Usage . REQUIRE _ AND _ USE Ċ import Ġcom . google . ar . core . exceptions .* Ċ import Ġcom . google . ar . scene form . Ar Scene View Ċ import Ġcom . google . ar . scene form . Node Ċ import Ġcom . google . ar . scene form . math . Quaternion Ċ import Ġcom . google . ar . scene form . math . Vector 3 Ċ import Ġcom . google . ar . scene form . rendering . Color Ċ import Ġjava . io . File Ċ import Ġjava . text . SimpleDateFormat Ċ import Ġjava . util .* Ċ import Ġkotlin . math . pow Ċ import Ġkotlin . math . round ToInt Ċ import Ġkotlin . math . sqrt Ċ Ċ val Ġscreenshot Handler Ġ= ĠHandler Thread (" screenshot ") ĊĠĠĠ Ġ. also Ġ{ Ġit . start () Ġ} ĊĠĠĠ Ġ. let Ġ{ ĠHandler ( it . lo oper ) Ġ} Ċ Ċ fun ĠP ose ?. format Translation ( context : ĠContext ): ĠString Ġ= Ġcontext . getString ( R . string . format _ pose _ translation , Ġthis ?. tx () Ġ?: Ġ 0 F , Ġthis ?. ty () Ġ?: Ġ 0 F , Ġthis ?. tz () Ġ?: Ġ 0 F ) Ċ fun ĠP ose ?. format Rotation ( context : ĠContext ): ĠString Ġ= Ġcontext . getString ( R . string . format _ pose _ rotation , Ġthis ?. qx () Ġ?: Ġ 0 F , Ġthis ?. qy () Ġ?: Ġ 0 F , Ġthis ?. qz () Ġ?: Ġ 0 F , Ġthis ?. qw () Ġ?: Ġ 0 F ) Ċ fun ĠP ose . to Vector 3 (): ĠVector 3 Ġ= ĠVector 3 ( tx (), Ġty (), Ġtz ()) Ċ fun ĠVector 3 . format ( context : ĠContext ) Ġ= Ġcontext . getString ( R . string . format _ vector 3 , Ġx , Ġy , Ġz ) Ċ fun ĠQuaternion . format ( context : ĠContext ) Ġ= Ġcontext . getString ( R . string . format _ qu aternion , Ġx , Ġy , Ġz , Ġw ) Ċ fun ĠSession . format ( context : ĠContext ) Ġ= Ġcontext . getString ( ĊĠĠĠ ĠR . string . format _ session , ĊĠĠĠ Ġall An chors . count (), ĊĠĠĠ ĠgetAll Track ables ( Plane :: class . java ). count (), ĊĠĠĠ ĠgetAll Track ables ( Point :: class . java ). count () Ċ ) Ċ Ċ fun ĠCamera Config . format ( context : ĠContext ) Ġ= Ġcontext . getString ( ĊĠĠĠ ĠR . string . format _ camera _ config , ĊĠĠĠ Ġtexture Size , ĊĠĠĠ Ġfps Range , ĊĠĠĠ Ġwhen Ġ( depth Sensor Usage ) Ġ{ ĊĠĠĠĠĠĠĠ ĠREQUIRE _ AND _ USE Ġ-> Ġtrue ĊĠĠĠĠĠĠĠ ĠDO _ NOT _ USE , Ġnull Ġ-> Ġfalse ĊĠĠĠ Ġ} Ċ ) Ċ Ċ fun ĠCamera ?. format Distance ( context : ĠContext , Ġnode : ĠNode ) Ġ= Ġthis ?. pose ?. let Ġ{ Ġformat Distance ( context , Ġdistance ( it . to Vector 3 (), Ġnode . world Position )) Ġ} Ġ?: Ġ" ?" Ċ Ċ fun Ġformat Distance ( context : ĠContext , Ġsrc : ĠNode , Ġdst : ĠNode ): ĠString Ġ= Ġformat Distance ( context , Ġdistance ( src , Ġdst )) Ċ Ċ fun Ġformat Distance ( context : ĠContext , Ġdistance In Met ers : ĠDouble ): ĠString Ġ{ ĊĠĠĠ Ġval Ġdistance In Cent ime ters Ġ= Ġ( distance In Met ers Ġ* Ġ 1 0 0 ). round ToInt () ĊĠĠĠ Ġreturn Ġif Ġ( distance In Cent ime ters Ġ>= Ġ 1 0 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . format _ distance _ m , Ġdistance In Cent ime ters Ġ/ Ġ 1 0 0 F ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . getString ( R . string . format _ distance _ cm , Ġdistance In Cent ime ters ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġdistance ( src : ĠNode , Ġdst : ĠNode ): ĠDouble Ġ= Ġdistance ( src . world Position , Ġdst . world Position ) Ċ Ċ fun Ġdistance ( src : ĠVector 3 , Ġdst : ĠVector 3 ): ĠDouble Ġ= Ġsqrt ((( dst . x Ġ- Ġsrc . x ). pow ( 2 ) Ġ+ Ġ( dst . y Ġ- Ġsrc . y ). pow ( 2 ) Ġ+ Ġ( dst . z Ġ- Ġsrc . z ). pow ( 2 )). toDouble ()) Ċ Ċ class ĠSimple Seek Bar ChangeListener ( val Ġblock : Ġ( Int ) Ġ-> ĠUnit ) Ġ: ĠSeek Bar . On Seek Bar ChangeListener Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠonStart Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{} ĊĠĠĠ Ġoverride Ġfun Ġon Stop Tracking Touch ( seek Bar : ĠSeek Bar ?) Ġ{} ĊĠĠĠ Ġoverride Ġfun Ġon Progress Changed ( seek Bar : ĠSeek Bar ?, Ġprogress : ĠInt , Ġfrom User : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġblock ( progress ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠAppCompatActivity . redirectTo Application Settings () Ġ{ ĊĠĠĠ Ġval Ġintent Ġ= ĠIntent (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġaction Ġ= ĠSettings . ACTION _ APPLICATION _ DETAILS _ SETTINGS ĊĠĠĠĠĠĠĠ Ġdata Ġ= ĠUri . from Parts (" package ", ĠpackageName , Ġnull ) ĊĠĠĠ Ġ} ĊĠĠĠ ĠstartActivity ( intent ) Ċ } Ċ Ċ fun Ġfilename (): ĠString Ġ= ĠSimpleDateFormat (" yyyy - MM - dd ĠHH : mm : ss ", ĠLocale . US ). format ( Date ()) Ċ Ċ fun Ġcache File ( context : ĠContext , Ġextension : ĠString ): ĠFile Ġ= ĠFile ( context . cacheDir , Ġfilename () Ġ+ Ġextension ) Ċ Ċ inline Ġfun Ġ< re ified ĠT > ĠAr Scene View . find Node (): ĠT ? Ġ= Ġscene . find In Hierarchy Ġ{ Ġit Ġis ĠT Ġ} Ġas ĠT ? Ċ Ċ fun ĠAr Scene View . screenshot () Ġ{ ĊĠĠĠ ĠToast . makeText ( context , ĠR . string . screenshot _ saving , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap . create Bitmap ( width , Ġheight , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠ ĠPixel Copy . request ( this , Ġbitmap , Ġ{ Ġresult Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ( result ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPixel Copy . SUCCESS Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġcache File ( context , Ġ". png ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap . compress ( Bitmap . Compress Format . PNG , Ġ 1 0 0 , Ġfile . output Stream ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠFile Provider . get Uri For File ( context , Ġcontext . packageName , Ġfile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( view Or Share ( uri , Ġ" image / png ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠToast . makeText ( context , Ġ" Screenshot Ġfailure : Ġ$ result ", ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, Ġscreenshot Handler ) Ċ } Ċ Ċ fun Ġview Or Share ( data : ĠUri , Ġmime : ĠString ): ĠIntent Ġ{ ĊĠĠĠ Ġval Ġview Ġ= ĠIntent ( Intent . ACTION _ VIEW ). apply Ġ{ ĊĠĠĠĠĠĠĠ ĠsetData And Type ( data , Ġmime ) ĊĠĠĠĠĠĠĠ Ġadd Flags ( Intent . FLAG _ GRANT _ READ _ URI _ PERMISSION ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġshare Ġ= ĠIntent ( Intent . ACTION _ SEND ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġtype Ġ= Ġmime ĊĠĠĠĠĠĠĠ Ġput Extra ( Intent . EXTRA _ STREAM , Ġdata ) ĊĠĠĠĠĠĠĠ Ġadd Flags ( Intent . FLAG _ GRANT _ READ _ URI _ PERMISSION ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn ĠIntent . create Chooser ( Intent (), Ġnull ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġput Extra ( Intent . EXTRA _ INITIAL _ INT ENTS , ĠarrayOf ( view , Ġshare )) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġ@ receiver : Color Int ĠInt . to Ar Color (): ĠColor Ġ= ĠColor ( this ) Ċ Ċ fun ĠP ose . translation () Ġ= ĠVector 3 ( tx (), Ġty (), Ġtz ()) Ċ Ċ fun ĠP ose . rotation () Ġ= ĠQuaternion ( qx (), Ġq y (), Ġq z (), Ġqw ()) Ċ Ċ fun ĠUn available Exception ?. message (): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠUn available Ar core Not Installed Exception Ġ-> ĠR . string . exception _ ar core _ not _ installed ĊĠĠĠĠĠĠĠ Ġis ĠUn available A pk Too Old Exception Ġ-> ĠR . string . exception _ apk _ too _ old ĊĠĠĠĠĠĠĠ Ġis ĠUn available Sdk Too Old Exception Ġ-> ĠR . string . exception _ sdk _ too _ old ĊĠĠĠĠĠĠĠ Ġis ĠUn available Device Not Compatible Exception Ġ-> ĠR . string . exception _ device _ not _ compatible ĊĠĠĠĠĠĠĠ Ġis ĠUn available User Decl ined Installation Exception Ġ-> ĠR . string . exception _ user _ decl ined _ installation ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠR . string . exception _ unknown ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠView . behavior (): ĠBottom Sheet Behavior < out ĠView > Ġ= ĠBottom Sheet Behavior . from ( this ) Ċ Ċ fun ĠBottom Sheet Behavior < out ĠView >. toggle () Ġ{ ĊĠĠĠ Ġstate Ġ= Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠ ĠBottom Sheet Behavior . STATE _ COLL AP SED Ġ-> ĠBottom Sheet Behavior . STATE _ EXP AN DED ĊĠĠĠĠĠĠĠ ĠBottom Sheet Behavior . STATE _ EXP AN DED Ġ-> ĠBottom Sheet Behavior . STATE _ COLL AP SED ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġreturn ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠBottom Sheet Behavior < out ĠView >. update (@ Bottom Sheet Behavior . State Ġstate : ĠInt , Ġis Hide able : ĠBoolean ?) Ġ{ ĊĠĠĠ Ġthis . state Ġ= Ġstate ĊĠĠĠ Ġif Ġ( is Hide able Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . is Hide able Ġ= Ġis Hide able ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġcreate Ar Core Viewer Intent ( uri : ĠUri , Ġmodel : ĠString , Ġlink : ĠString , Ġtitle : ĠString ): ĠIntent Ġ= ĠIntent ( Intent . ACTION _ VIEW ). apply Ġ{ ĊĠĠĠ Ġ` package ` Ġ= Ġ" com . google . ar . core " ĊĠĠĠ Ġdata Ġ= Ġuri . build Up on () ĊĠĠĠĠĠĠĠ Ġ. append QueryParameter (" file ", Ġmodel ) ĊĠĠĠĠĠĠĠ Ġ. append QueryParameter (" mode ", Ġ" ar _ preferred ") ĊĠĠĠĠĠĠĠ Ġ. append QueryParameter (" title ", Ġtitle ) ĊĠĠĠĠĠĠĠ Ġ. append QueryParameter (" link ", Ġlink ) ĊĠĠĠĠĠĠĠ Ġ. append QueryParameter (" resizable ", Ġ" true ") ĊĠĠĠĠĠĠĠ Ġ. build () Ċ } Ċ Ċ fun ĠIntent ?. safe Start Activity ( context : ĠContext ) Ġ{ ĊĠĠĠ Ġif Ġ( this Ġ== Ġnull ) Ġreturn ĊĠĠĠ Ġif Ġ( resolve Activity ( context . package Manager ) Ġ== Ġnull ) Ġreturn ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . startActivity ( this ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠ Ġ} Ċ } Ċ