package Ġcom . next gen xr . j enn io bd 2 monitor Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . bluetooth . Bluetooth Adapter Ċ import Ġandroid . bluetooth . Bluetooth Device Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . view . View Ċ import Ġandroid . widget .* Ċ Ċ public Ġclass ĠO BD 2 Monitor Devices Activity Ġ Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġ// ĠMember Ġfields ĊĠĠĠ Ġprivate Ġvar Ġm Bt Adapter : ĠBluetooth Adapter ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Pa ired Devices Array Adapter : ĠArray Adapter < String >? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm New Devices Array Adapter : ĠArray Adapter < String >? Ġ= Ġnull ĊĊĠĠĠ Ġ// ĠMember Ġwidgets ĊĠĠĠ Ġprivate Ġvar Ġm Scan Button : ĠButton ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm New Div ices Title : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Pa ired Devices Title : ĠTextView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm Pa ired Devices List : ĠListView ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm New Devices List : ĠListView ? Ġ= Ġnull ĊĊĠĠĠ Ġ////////////////////////////////// //////////////////////// /////// ĊĠĠĠ Ġ// ĠThe ĠBroadcast Receiver Ġthat Ġlist ens Ġfor Ġdiscovered Ġdevices Ġand ĊĠĠĠ Ġ// Ġchanges Ġthe Ġtitle Ġwhen Ġdiscovery Ġis Ġfinished ĊĠĠĠ Ġprivate Ġval Ġm Receiver : ĠBroadcast Receiver Ġ= Ġobject Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġintent . action ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen Ġdiscovery Ġfinds Ġa Ġdevice ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Bluetooth Device . ACTION _ FOUND Ġ== Ġaction ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe ĠBluetooth Device Ġobject Ġfrom Ġthe ĠIntent ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdevice Ġ= Ġintent . get Parcelable Extra < Bluetooth Device >( Bluetooth Device . EXTRA _ DEVICE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIf Ġit 's Ġalready Ġpaired , Ġskip Ġit , Ġbecause Ġit 's Ġbeen Ġlisted Ġalready ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( device Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( device . bond State Ġ!= ĠBluetooth Device . B OND _ B ON DED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm New Devices Array Adapter !!. add (""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ${ device . name } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ${ device . address } ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWhen Ġdiscovery Ġis Ġfinished , Ġchange Ġthe ĠActivity Ġtitle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( Bluetooth Adapter . ACTION _ DIS COVERY _ FINISHED Ġ== Ġaction ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġset ProgressBar In determinate Visibility ( false ) Ġ// ĠDeprecated ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsetTitle ( R . string . select _ device ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m New Devices Array Adapter !!. count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġno Devices Ġ= Ġresources . getText ( R . string . no _ device _ found ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm New Devices Array Adapter !!. add ( no Devices ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ ob d 2 _ monitor _ devices ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġresult ĠC ANCE LED Ġin Ġcase Ġthe Ġuser Ġback s Ġout ĊĠĠĠĠĠĠĠ Ġset Result ( RESULT _ C ANCE LED ) ĊĠĠĠĠĠĠĠ Ġm New Div ices Title Ġ= ĠfindViewById ( R . id . title _ new _ devices ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġm Pa ired Devices Title Ġ= ĠfindViewById ( R . id . title _ paired _ devices ) Ġas ĠTextView ĊĠĠĠĠĠĠĠ Ġm Scan Button Ġ= ĠfindViewById ( R . id . button _ scan ) Ġas ĠButton ĊĠĠĠĠĠĠĠ Ġm Scan Button !!. setOnClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Discovery () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠInitialize Ġarray Ġadapters . ĠOne Ġfor Ġalready Ġpaired Ġdevices Ġand ĊĠĠĠĠĠĠĠ Ġ// Ġone Ġfor Ġnewly Ġdiscovered Ġdevices ĊĠĠĠĠĠĠĠ Ġm Pa ired Devices Array Adapter Ġ= ĠArray Adapter ( this , ĠR . layout . device _ name ) ĊĠĠĠĠĠĠĠ Ġm New Devices Array Adapter Ġ= ĠArray Adapter ( this , ĠR . layout . device _ name ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠFind Ġand Ġset Ġup Ġthe ĠListView Ġfor Ġpaired Ġdevices ĊĠĠĠĠĠĠĠ Ġm Pa ired Devices List Ġ= ĠfindViewById ( R . id . paired _ devices ) Ġas ĠListView ĊĠĠĠĠĠĠĠ Ġm Pa ired Devices List !!. adapter Ġ= Ġm Pa ired Devices Array Adapter ĊĠĠĠĠĠĠĠ Ġm Pa ired Devices List !!. on ItemClickListener Ġ= Ġm Device ClickListener ĊĊĠĠĠĠĠĠĠ Ġ// ĠFind Ġand Ġset Ġup Ġthe ĠListView Ġfor Ġnewly Ġdiscovered Ġdevices ĊĠĠĠĠĠĠĠ Ġm New Devices List Ġ= ĠfindViewById ( R . id . new _ devices ) Ġas ĠListView ĊĠĠĠĠĠĠĠ Ġm New Devices List !!. adapter Ġ= Ġm New Devices Array Adapter ĊĠĠĠĠĠĠĠ Ġm New Devices List !!. on ItemClickListener Ġ= Ġm Device ClickListener ĊĊĠĠĠĠĠĠĠ Ġ// ĠRegister Ġfor Ġbroadcast s Ġwhen Ġa Ġdevice Ġis Ġdiscovered ĊĠĠĠĠĠĠĠ Ġvar Ġfilter Ġ= ĠIntent Filter ( Bluetooth Device . ACTION _ FOUND ) ĊĠĠĠĠĠĠĠ Ġthis . register Receiver ( m Receiver , Ġfilter ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠRegister Ġfor Ġbroadcast s Ġwhen Ġdiscovery Ġhas Ġfinished ĊĠĠĠĠĠĠĠ Ġfilter Ġ= ĠIntent Filter ( Bluetooth Adapter . ACTION _ DIS COVERY _ FINISHED ) ĊĠĠĠĠĠĠĠ Ġthis . register Receiver ( m Receiver , Ġfilter ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġlocal ĠBluetooth Ġadapter ĊĠĠĠĠĠĠĠ Ġm Bt Adapter Ġ= ĠBluetooth Adapter . getDefault Adapter () ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġa Ġset Ġof Ġcurrently Ġpaired Ġdevices ĊĠĠĠĠĠĠĠ Ġval Ġpaired Devices Ġ= Ġm Bt Adapter . get Bon ded Devices () ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġthere Ġare Ġpaired Ġdevices , Ġadd Ġeach Ġone Ġto Ġthe ĠArray Adapter ĊĠĠĠĠĠĠĠ Ġif Ġ( paired Devices . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Pa ired Devices Title !!. visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( device Ġin Ġpaired Devices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Pa ired Devices Array Adapter !!. add (""" ĊĠĠĠ Ġ${ device . name } ĊĠĠĠ Ġ${ device . address } ĊĠĠĠ Ġ""" . trim Indent ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġno Devices Ġ= Ġresources . getText ( R . string . none _ paired ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Pa ired Devices Array Adapter !!. add ( no Devices ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ////////////////////////////////// //////////////////////// / ĊĠĠĠ Ġprivate Ġval Ġm Device ClickListener Ġ= ĠAdapter View . On ItemClickListener Ġ{ Ġav , Ġv , Ġarg 2 , Ġarg 3 Ġ-> Ġ// ĠCancel Ġdiscovery Ġbecause Ġit 's Ġcost ly Ġand Ġwe 're Ġabout Ġto Ġconnect ĊĠĠĠĠĠĠĠ Ġm Bt Adapter !!. cancel Discovery () ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġdevice ĠMAC Ġaddress , Ġwhich Ġis Ġthe Ġlast Ġ 1 7 Ġchars Ġin Ġthe ĠView ĊĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġ( v Ġas ĠTextView ). text . toString () ĊĠĠĠĠĠĠĠ Ġval Ġaddress Ġ= Ġinfo . substring ( info . length Ġ- Ġ 1 7 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe Ġresult ĠIntent Ġand Ġinclude Ġthe ĠMAC Ġaddress ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( EXTRA _ DEVICE _ ADDRESS , Ġaddress ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġresult Ġand Ġfinish Ġthis ĠActivity ĊĠĠĠĠĠĠĠ Ġset Result ( RESULT _ OK , Ġintent ) ĊĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġdo Discovery () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIndic ate Ġscanning Ġin Ġthe Ġtitle ĊĠĠĠĠĠĠĠ Ġset ProgressBar In determinate Visibility ( true ) ĊĠĠĠĠĠĠĠ ĠsetTitle ( R . string . device _ sc anning ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠTurn Ġon Ġsub - title Ġfor Ġnew Ġdevices ĊĠĠĠĠĠĠĠ Ġm New Div ices Title !!. visibility Ġ= ĠView . VISIBLE ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġwe 're Ġalready Ġdiscover ing , Ġstop Ġit ĊĠĠĠĠĠĠĠ Ġif Ġ( m Bt Adapter !!. is Discover ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Bt Adapter !!. cancel Discovery () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠRequest Ġdiscover Ġfrom ĠBluetooth Adapter ĊĠĠĠĠĠĠĠ Ġm Bt Adapter !!. start Discovery () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġsure Ġwe 're Ġnot Ġdoing Ġdiscovery Ġanymore ĊĠĠĠĠĠĠĠ Ġif Ġ( m Bt Adapter Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Bt Adapter !!. cancel Discovery () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠUn register Ġbroadcast Ġlisteners ĊĠĠĠĠĠĠĠ Ġunregister Receiver ( m Receiver ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Device List Activity " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠD Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ// ĠReturn ĠIntent Ġextra ĊĠĠĠĠĠĠĠ Ġvar ĠEX TRA _ DEVICE _ ADDRESS Ġ= Ġ" device _ address " ĊĠĠĠ Ġ} ĊĊ Ċ }