package Ġcom . example . ar . core . fil ament . hello . ar . presentation . ar core Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroidx . lifecycle . Default Lifecycle Observer Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġcom . example . ar . core . fil ament . hello . ar . helpers . Camera Permission Helper Ċ import Ġcom . google . ar . core . Ar Core A pk Ċ import Ġcom . google . ar . core . Session Ċ import Ġcom . google . ar . core . exceptions . Camera Not Available Exception Ċ Ċ const Ġval ĠTAG Ġ= Ġ" Ar Core Session " Ċ Ċ class ĠAr Core Session ( ĊĠĠĠ Ġprivate Ġval Ġactivity : ĠActivity , ĊĠĠĠ Ġprivate Ġval Ġfeatures : ĠSet < Session . Feature > Ġ= Ġset Of () Ċ ) Ġ: ĠDefault Lifecycle Observer Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAr Core ĠSession ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġsession : ĠSession ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreating Ġa Ġsession Ġmay Ġfail . ĠIn Ġthis Ġcase , Ġsession Ġwill Ġremain Ġnull , Ġand Ġthis Ġfunction Ġwill Ġbe ĊĠĠĠĠ Ġ* Ġcalled Ġwith Ġan Ġexception . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġexception Callback : Ġ(( Exception ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBefore Ġ` Session . resume ()` Ġis Ġcalled , Ġa Ġsession Ġmust Ġbe Ġconfigured . ĊĠĠĠĠ Ġ* ĠCall Ġthis Ġfrom ĠMainActivity Ġwith ĠConfig ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġbefore Session Resume : Ġ(( Session ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġinstall Requested Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġfun Ġtry Create Session (): ĠSession ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġapp Ġmust Ġhave Ġbeen Ġgiven Ġthe ĠCAM ERA Ġpermission . ĠIf Ġwe Ġdon 't Ġhave Ġit Ġyet , Ġrequest Ġit . ĊĠĠĠĠĠĠĠ Ġif Ġ(! Camera Permission Helper . has Camera Permission ( activity )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCamera Permission Helper . request Camera Permission ( activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRequest Ġinstallation Ġif Ġnecessary . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( Ar Core A pk . getInstance (). request Install ( activity , Ġ! install Requested ) !! ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAr Core A pk . Install Status . INSTALL _ REQUEST ED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstall Requested Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtry Create Session Ġwill Ġbe Ġcalled Ġagain , Ġso Ġwe Ġreturn Ġnull Ġfor Ġnow . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAr Core A pk . Install Status . INST ALLED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠLeft Ġempty ; Ġnothing Ġneeds Ġto Ġbe Ġdone . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġa Ġsession Ġif ĠGoogle ĠPlay ĠServices Ġfor ĠAR Ġis Ġinstalled Ġand Ġup Ġto Ġdate . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSession ( activity , Ġfeatures ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexception Callback ?. invoke ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume ( owner : ĠLifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume ( owner ) ĊĊĠĠĠĠĠĠĠ Ġval Ġsession Ġ= Ġthis . session Ġ?: Ġtry Create Session () Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbefore Session Resume ?. invoke ( session ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession . resume () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . session Ġ= Ġsession ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠCamera Not Available Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexception Callback ?. invoke ( e ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause ( owner : ĠLifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsession ?. pause () ĊĊĠĠĠĠĠĠĠ Ġsuper . on Pause ( owner ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy ( owner : ĠLifecycle Owner ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠExplicit ly Ġclose Ġthe ĠAR Core Ġsession Ġto Ġrelease Ġnative Ġresources . ĊĠĠĠĠĠĠĠ Ġ// ĠReview Ġthe ĠAPI Ġreference Ġfor Ġimportant Ġconsider ations Ġbefore Ġcalling Ġclose () Ġin Ġapps Ġwith ĊĠĠĠĠĠĠĠ Ġ// Ġmore Ġcomplicated Ġlifecycle Ġrequirements : ĊĠĠĠĠĠĠĠ Ġ// Ġhttps :// developers . google . com / ar / reference / java / ar core / reference / com / google / ar / core / Session # close () ĊĠĠĠĠĠĠĠ Ġsession ?. close () ĊĠĠĠĠĠĠĠ Ġsession Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġsuper . on Destroy ( owner ) ĊĠĠĠ Ġ} Ċ } Ċ