/* Ċ Ġ* ĠSPDX - File Copyright Text : Ġ 2 0 2 0 , Ġmicro G ĠProject ĠTeam Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ*/ Ċ Ċ package Ġorg . micro g . gms . near by . ex posure notification Ċ Ċ import Ġandroid . annotation . Target Api Ċ import Ġandroid . app . Service Ċ import Ġandroid . bluetooth . Bluetooth Adapter Ċ import Ġandroid . bluetooth . le .* Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . IB inder Ċ Ċ @ Target Api ( 2 1 ) Ċ class ĠScanner Service Ġ: ĠService () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġstarted Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdb : ĠEx posure Database ĊĠĠĠ Ġprivate Ġval Ġcallback Ġ= Ġobject Ġ: ĠScan Callback () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Scan Result ( callback Type : ĠInt , Ġresult : ĠScan Result ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġresult ?. scan Record ?. service Data ?. get ( SERVICE _ UUID ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( data . size Ġ< Ġ 1 6 ) Ġreturn Ġ// ĠIgnore Ġinvalid Ġad vertise ments ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdb . note Ad vertisement ( data . slice Array ( 0 .. 1 5 ), Ġdata . drop ( 1 6 ). toByteArray (), Ġresult . rssi ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġscanner : ĠBluetooth Le Scanner ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠBluetooth Adapter . getDefault Adapter (). bluetooth Le Scanner ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Command ( intent : ĠIntent ?, Ġflags : ĠInt , Ġstart Id : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart Command ( intent , Ġflags , Ġstart Id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( Exposure Preferences ( this ). scanner Enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Scan () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstop Self () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠSTART _ STICK Y ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġstop Scan () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ( intent : ĠIntent ?): ĠI Binder ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġprivate Ġfun Ġstart Scan () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( started ) Ġreturn ĊĠĠĠĠĠĠĠ Ġdb Ġ= ĠEx posure Database ( this ) ĊĠĠĠĠĠĠĠ Ġscanner . start Scan ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( Scan Filter . Builder (). set Service Uuid ( SERVICE _ UUID ). set Service Data ( SERVICE _ UUID , Ġbyte ArrayOf ( 0 ), Ġbyte ArrayOf ( 0 )). build ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScan Settings . Builder (). build (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcallback ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġstarted Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Synchron ized ĊĠĠĠ Ġprivate Ġfun Ġstop Scan () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! started ) Ġreturn ĊĠĠĠĠĠĠĠ Ġscanner . stop Scan ( callback ) ĊĠĠĠĠĠĠĠ Ġdb . close () ĊĠĠĠĠĠĠĠ Ġstarted Ġ= Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ