package Ġcom . robot p aj am as . android . rx blue te eth . ui . scan Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . bluetooth . Bluetooth Adapter Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . databinding . Data Binding Util Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 7 . widget . Linear LayoutManager Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . Toast Ċ import Ġcom . robot p aj am as . android . rx blue te eth . R Ċ import Ġcom . robot p aj am as . android . rx blue te eth . databinding . Activity Scan Binding Ċ import Ġcom . robot p aj am as . android . rx blue te eth . ui . device . Device Activity Ċ import Ġcom . robot p aj am as . android . rx blue te eth . ui . widgets . re cycl ers . Recycler ItemClickListener Ċ import Ġcom . robot p aj am as . blue te eth . Blue te eth Ċ Ċ class ĠDevice Scan Activity Ġ: ĠActivity (), ĊĠĠĠĠĠĠĠ ĠDevice Scan ViewModel . State Handler , ĊĠĠĠĠĠĠĠ ĠDevice Scan ViewModel . Navigator Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġvm Ġby Ġlazy Ġ{ ĠDevice Scan ViewModel ( this , Ġthis ) Ġ} ĊĠĠĠ Ġprivate Ġval Ġtouch Listener Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠRe cycler ItemClickListener ( this , Ġbinding . devices , Ġobject Ġ: ĠRe cycler ItemClickListener . On ItemClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Item Click ( view : ĠView , Ġposition : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvm . select ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠActivity Scan Binding ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ scan ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠPut Ġthis Ġin ĠMain Application ? ĊĠĠĠĠĠĠĠ Ġ// ĠIf ĠBLE Ġsupport Ġisn 't Ġthere , Ġquit Ġthe Ġapp ĊĠĠĠĠĠĠĠ Ġcheck Bluetooth Support () ĊĠĠĠĠĠĠĠ ĠBlue te eth . init ( application Context ) ĊĊĠĠĠĠĠĠĠ Ġbinding . vm Ġ= Ġvm ĊĠĠĠĠĠĠĠ Ġbinding . devices . layout Manager Ġ= ĠLinearLayoutManager ( this , ĠLinearLayoutManager . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġbinding . devices . adapter Ġ= ĠDevice Scan Adapter () ĊĠĠĠĠĠĠĠ Ġbinding . devices . add On Item Touch Listener ( touch Listener ) ĊĠĠĠĠĠĠĠ Ġbinding . swiper ef resh . setOn Refresh Listener Ġ{ Ġvm . start Scan () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠĠĠĠĠ Ġvm . stop Scan () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠCheck Ġfor ĠBLE Ġsupport Ġ- Ġalso Ġchecked Ġfrom ĠAndroid Ġmanifest . ĊĠĠĠ Ġprivate Ġfun Ġcheck Bluetooth Support () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! package Manager . has System Feature ( PackageManager . FEATURE _ BL U ETO OTH _ LE )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexit App (" No ĠBLE ĠSupport ...") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġbt Adapter Ġ= ĠBluetooth Adapter . getDefault Adapter () ĊĠĠĠĠĠĠĠ Ġif Ġ( bt Adapter Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexit App (" No ĠBLE ĠSupport ...") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġif Ġ(! bt Adapter !!. isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġenable Bluetooth () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠSomething Ġfailed , Ġexit Ġthe Ġapp Ġand Ġsend Ġa Ġtoast Ġas Ġto Ġwhy ĊĠĠĠ Ġprivate Ġfun Ġexit App ( reason : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ ĠToast . makeText ( application Context , Ġreason , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠAsk Ġuser Ġto Ġenable Ġbluetooth Ġif Ġit Ġis Ġcurrently Ġdisabled ĊĠĠĠ Ġprivate Ġfun Ġenable Bluetooth () Ġ{ ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( Intent ( Bluetooth Adapter . ACTION _ REQUEST _ ENABLE ), ĠREQ _ BL U ETO OTH _ ENABLE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠREQ _ BL U ETO OTH _ ENABLE Ġ= Ġ 1 0 0 0 ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġscanning () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . swiper ef resh . is Refresh ing Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnot Sc anning () Ġ{ ĊĠĠĠĠĠĠĠ Ġbinding . swiper ef resh . is Refresh ing Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġnavigate Next ( mac Address : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( this , ĠDevice Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( getString ( R . string . extra _ mac _ address ), Ġmac Address ) ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent ) ĊĠĠĠ Ġ} Ċ } Ċ