package Ġio . loc ally . eng age sdk . be ac ons Ċ Ċ import Ġandroid . Manifest . permission .* Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . pm . PackageManager . PERMISSION _ GRAN TED Ċ import Ġandroid . support . v 4 . app . Activity Compat Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġio . loc ally . eng age sdk . campaign s . Campaign Coordinator Ċ import Ġio . loc ally . eng age sdk . data models . imp ression . Beacon Ċ Ċ class ĠBe ac ons Monitor ( private Ġval Ġcontext : ĠContext ): ĠBe acon Delegate Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠREQUEST _ CODE Ġ= Ġ 1 0 1 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ Ġrequest Permissions () Ġ} ĊĊĠĠĠ Ġfun Ġstart Monitoring (){ ĊĠĠĠĠĠĠĠ Ġval Ġidentifier Ġ= Ġjava . util . UUID . randomUUID (). toString () Ġ// random Ġidentifier Ġ( for Ġnow ) ĊĠĠĠĠĠĠĠ ĠBe acon Scanner . init ( context , Ġidentifier ) ĊĊĠĠĠĠĠĠĠ Ġif ( has Permission ) ĠBe acon Scanner . scan ( this ) ĊĠĠĠĠĠĠĠ Ġelse Ġrequest Permissions () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstop Monitoring () Ġ= ĠBe acon Scanner . stop Scan () ĊĊĠĠĠ Ġoverride Ġfun Ġdid Be ac ons Updated ( be ac ons : ĠList < Beacon >) Ġ= ĠCampaign Coordinator . request Beacon Campaign s ( be ac ons ) ĊĊĠĠĠ Ġprivate Ġval Ġhas Permission : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġco arse Ġ= ĠContext Compat . check Self Permission ( context , ĠACCESS _ CO AR SE _ LOCATION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfine Ġ= ĠContext Compat . check Self Permission ( context , ĠACCESS _ F INE _ LOCATION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbt Admin Ġ= ĠContext Compat . check Self Permission ( context , ĠB LU ETO OTH _ ADMIN ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbluetooth Ġ= ĠContext Compat . check Self Permission ( context , ĠB LU ETO OTH ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġco arse Ġ== ĠPER MISSION _ GRAN TED Ġ&& Ġfine Ġ== ĠPER MISSION _ GRAN TED Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbt Admin Ġ== ĠPER MISSION _ GRAN TED Ġ&& Ġbluetooth Ġ== ĠPER MISSION _ GRAN TED ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest Permissions () Ġ{ ĊĠĠĠĠĠĠĠ ĠActivity Compat . request Permissions ( context Ġas ĠActivity , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ACCESS _ F INE _ LOCATION , ĠACCESS _ CO AR SE _ LOCATION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB LU ETO OTH _ ADMIN , ĠB LU ETO OTH ), ĠREQUEST _ CODE ) ĊĠĠĠ Ġ} Ċ }