package Ġcom . al ta ure um . covid . tracking . ui . activities Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . app . Activity Ċ import Ġandroid . bluetooth . Bluetooth Adapter Ċ import Ġandroid . bluetooth . Bluetooth Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . al ta ure um . covid . tracking . R Ċ import Ġcom . al ta ure um . covid . tracking . ui . fragments . Fragment Registry Ċ import Ġdagger . android . Android Injection Ċ import Ġdagger . android . Android Injector Ċ import Ġdagger . android . Dispatch ing Android Injector Ċ import Ġdagger . android . Has Android Injector Ċ Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠRegistry Activity Ġ: ĠAppCompatActivity (), ĠHas Android Injector , ĠFragment Registry . On List Fragment Interaction Listener Ġ{ ĊĊĊĠĠĠ Ġprivate Ġvar Ġm Bluetooth Adapter : ĠBluetooth Adapter ? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġopen Ġlateinit Ġvar Ġfragment Dispatch ing Android Injector : ĠDispatch ing Android Injector < Any > ĊĊĠĠĠ Ġoverride Ġfun Ġandroid Injector (): ĠAndroid Injector < Any >? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfragment Dispatch ing Android Injector ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ contact _ list ) ĊĠĠĠĠĠĠĠ ĠAndroid Injection . inject ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġbluetooth Manager Ġ= Ġget System Service ( Context . BL U ETO OTH _ SERVICE ) Ġas ĠBluetooth Manager ĊĠĠĠĠĠĠĠ Ġm Bluetooth Adapter Ġ= Ġbluetooth Manager . adapter ĊĊĠĠĠĠĠĠĠ Ġif ( savedInstanceState == null ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect Fragment Registry () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġ// ĠCheck Ġlow Ġenergy Ġsupport ĊĠĠĠĠĠĠĠ Ġif Ġ(! package Manager . has System Feature ( PackageManager . FEATURE _ BL U ETO OTH _ LE )) Ġ{ Ġ// ĠGet Ġa Ġnewer Ġdevice ĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this , Ġ" No ĠLE ĠSupport .", ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} Ġelse { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Permissions () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhas Permissions (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Bluetooth Adapter Ġ== Ġnull Ġ|| Ġ! m Bluetooth Adapter !!. isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Bluetooth Enable () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ(! has Location Permissions ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Location Permission () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest Bluetooth Enable () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġenable Bt Intent Ġ= ĠIntent ( Bluetooth Adapter . ACTION _ REQUEST _ ENABLE ) ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( enable Bt Intent , REQUEST _ ENABLE _ BT ) ĊĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Requested Ġuser Ġenables ĠBluetooth . ĠTry Ġstarting Ġthe Ġscan Ġagain .") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhas Location Permissions (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Self Permission ( Manifest . permission . ACCESS _ F INE _ LOCATION ) Ġ== ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġrequest Location Permission () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . M ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( TAG , Ġ" Requested Ġuser Ġenable ĠLocation . ĠTry Ġstarting Ġthe Ġscan Ġagain .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠarrayOf Ġ= ĠarrayOf ( Manifest . permission . ACCESS _ F INE _ LOCATION , ĠManifest . permission . ACCESS _ BACKGROUND _ LOCATION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠREQUEST _ F INE _ LOCATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Continue () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Response Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġset Result ( Activity . RESULT _ OK , Ġintent Response ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprotected Ġfun Ġselect Fragment Registry () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Manager Ġ= Ġsupport FragmentManager ĊĠĠĠĠĠĠĠ Ġval Ġft Ġ= Ġfragment Manager . beginTransaction () ĊĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠFragment Registry . newInstance () ĊĠĠĠĠĠĠĠ Ġft . replace ( R . id . fragment , Ġfragment , ĠFragment Registry :: class . java . simple Name ) ĊĠĠĠĠĠĠĠ Ġft . commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject { ĊĠĠĠĠĠĠĠ Ġval ĠTAG Ġ= Registry Activity :: class . java . simple Name ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠREQUEST _ ENABLE _ BT Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠREQUEST _ F INE _ LOCATION Ġ= Ġ 2 ĊĠĠĠ Ġ} ĊĊĊĊ Ċ }