package Ġcom . sil icon labs . ble demo . Ad vert iser . Activities Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . bluetooth . Bluetooth Adapter Ċ import Ġandroid . content . Broadcast Receiver Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Handler Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġandroidx . recyclerview . widget . Linear LayoutManager Ċ import Ġandroidx . recyclerview . widget . RecyclerView Ċ import Ġcom . sil icon labs . ble demo . Ad vert iser . Adapters . Ad vert iser Adapter Ċ import Ġcom . sil icon labs . ble demo . Ad vert iser . Dialog s . Device Name Dialog Ċ import Ġcom . sil icon labs . ble demo . Ad vert iser . Dialog s . Remove Ad vert iser Dialog Ċ import Ġcom . sil icon labs . ble demo . Ad vert iser . Models . Ad vert iser Ċ import Ġcom . sil icon labs . ble demo . Ad vert iser . Models . Ad vert iser Data Ċ import Ġcom . sil icon labs . ble demo . Ad vert iser . Models . Ad vert iser List Ċ import Ġcom . sil icon labs . ble demo . Ad vert iser . Present ers . Ad vert iser Activity Presenter Ċ import Ġcom . sil icon labs . ble demo . Ad vert iser . Services . Ad vert iser Service Ċ import Ġcom . sil icon labs . ble demo . Ad vert iser . Utils . Ad vert iser Storage Ċ import Ġcom . sil icon labs . ble demo . Base . Base Activity Ċ import Ġcom . sil icon labs . ble demo . R Ċ import Ġcom . sil icon labs . ble demo . Views . Bluetooth Enable Bar Ċ import Ġcom . sil icon labs . ble demo . Views . FullScreen Info Ċ import Ġkotlinx . android . synt hetic . main . action bar .* Ċ import Ġkotlinx . android . synt hetic . main . activity _ advert iser .* Ċ import Ġkotlinx . android . synt hetic . main . bluetooth _ enable _ bar .* Ċ Ċ class ĠAd vert iser Activity Ġ: ĠBase Activity (), ĠAd vert iser Adapter . On ItemClickListener , ĠI Ad vert iser Activity View Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpresenter : ĠAd vert iser Activity Presenter ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġadvert iser Adapter : ĠAd vert iser Adapter ĊĠĠĠ Ġprivate Ġvar Ġis Bluetooth Adapter Enabled Ġ= Ġtrue ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbluetooth Enable Bar : ĠBluetooth Enable Bar ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġfull Screen Info : ĠFull Screen Info ĊĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠEX TRA _ ITEM _ POSITION Ġ= Ġ" EXTRA _ ITEM _ POSITION " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠREQUEST _ CODE _ EDIT Ġ= Ġ 1 0 0 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDEL AY _ NOTIFY _ DATA _ CHANGED _ MS : ĠLong Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠACTION _ UPDATE _ ITEM _ VIEW Ġ= Ġ" ACTION _ UPDATE _ ITEM _ VIEW " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbluetooth Receiver : ĠBroadcast Receiver Ġ= Ġobject Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext , Ġintent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġaction Ġ= Ġintent . action ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( action Ġ== ĠBluetooth Adapter . ACTION _ STATE _ CHANGED ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġstate Ġ= Ġintent . getInt Extra ( Bluetooth Adapter . EXTRA _ STATE , ĠBluetooth Adapter . ERROR ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( state ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBluetooth Adapter . STATE _ OFF , ĠBluetooth Adapter . STATE _ TUR NING _ OFF Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . let Ġ{ Ġfor Ġ( item Ġin ĠAd vert iser List . getList ( context )) Ġitem . stop () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadvert iser Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Bluetooth Adapter Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Enable Bar . show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBluetooth Adapter . STATE _ ON Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! is Bluetooth Adapter Enabled ) Ġshow Message ( R . string . toast _ bluetooth _ enabled ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Bluetooth Adapter Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth _ enable ?. visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠBluetooth Adapter . STATE _ TUR NING _ ON Ġ-> Ġis Bluetooth Adapter Enabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ advert iser ) ĊĠĠĠĠĠĠĠ Ġprepare Toolbar () ĊĠĠĠĠĠĠĠ Ġprepare Custom Components () ĊĠĠĠĠĠĠĠ Ġpresenter Ġ= ĠAd vert iser Activity Presenter ( this , ĠAd vert iser Storage ( this ), ĠAd vert iser List . getList ( this @ Ad vert iser Activity )) ĊĠĠĠĠĠĠĠ Ġpresenter . populate Ad vert iser Adapter () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Bluetooth Adapter Enabled ) Ġpresenter . check Extended Ad vertising Supported () ĊĠĠĠĠĠĠĠ Ġbluetooth _ enable _ btn . setOnClickListener Ġ{ Ġbluetooth Enable Bar . change Enable Bluetooth Adapter To Connecting () Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠIntent Filter ( Bluetooth Adapter . ACTION _ STATE _ CHANGED ) ĊĠĠĠĠĠĠĠ Ġregister Receiver ( bluetooth Receiver , Ġfilter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Toolbar () Ġ{ ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġiv _ go _ back . setOnClickListener Ġ{ Ġon Back Pressed () Ġ} ĊĠĠĠĠĠĠĠ Ġtoolbar . overflow Icon Ġ= ĠContext Compat . get Drawable ( this , ĠR . drawable . ic _ menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprepare Custom Components () Ġ{ ĊĠĠĠĠĠĠĠ Ġbluetooth Enable Bar Ġ= ĠfindViewById ( R . id . bluetooth _ enable ) ĊĠĠĠĠĠĠĠ Ġfull Screen Info Ġ= ĠfindViewById ( R . id . full _ screen _ info _ no _ advert is ers ) ĊĠĠĠĠĠĠĠ Ġfull Screen Info . initialize ( R . drawable . ic _ advert iser , ĠgetString ( R . string . advert iser _ label _ no _ configured _ advert is ers )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ advert iser , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . device _ name Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠDevice Name Dialog ( object Ġ: ĠDevice Name Dialog . Device Name Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Dismiss () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHandler (). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadvert iser Adapter . notify DataSet Changed () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĠDEL AY _ NOTIFY _ DATA _ CHANGED _ MS ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}). show ( support FragmentManager , Ġ" dialog _ device _ name ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . create _ new Ġ-> Ġ{ Ġpresenter . createNew Item (); Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . switch _ all _ off Ġ-> Ġ{ Ġpresenter . switch All Items Off (); Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Copy Click ( item : ĠAd vert iser ) Ġ{ Ġpresenter . copy Item ( item ) Ġ} ĊĠĠĠ Ġoverride Ġfun Ġon Edit Click ( position : ĠInt ) Ġ{ Ġpresenter . edit Item ( position ) Ġ} ĊĠĠĠ Ġoverride Ġfun Ġon Remove Click ( position : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Ad vert iser Storage ( this @ Ad vert iser Activity ). should Display Remove Ad vert iser Dialog ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRemove Ad vert iser Dialog ( object Ġ: ĠRemove Ad vert iser Dialog . Callback Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Ok Clicked () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter . removeItem ( position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}). show ( support FragmentManager , Ġ" dialog _ remove _ advert iser ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġpresenter . removeItem ( position ) ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Ad vert iser Pop ulated ( items : ĠArrayList < Ad vert iser >) Ġ{ ĊĠĠĠĠĠĠĠ Ġrv _ advert iser . layout Manager Ġ= ĠLinearLayoutManager ( this , ĠRecyclerView . VERTICAL , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġadvert iser Adapter Ġ= ĠAd vert iser Adapter ( items , Ġthis , Ġthis ) ĊĠĠĠĠĠĠĠ Ġrv _ advert iser . adapter Ġ= Ġadvert iser Adapter ĊĠĠĠĠĠĠĠ Ġhandle FullScreen Info Changes () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Copy Clicked ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadvert iser Adapter . notify Item Inserted ( position ) ĊĠĠĠĠĠĠĠ Ġadvert iser Adapter . notify Item Range Changed ( position Ġ- Ġ 1 , Ġ 2 , ĠUnit ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Created ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadvert iser Adapter . notify Item Inserted ( position ) ĊĠĠĠĠĠĠĠ Ġadvert iser Adapter . notify Item Range Changed ( position Ġ- Ġ 1 , Ġ 2 , ĠUnit ) ĊĠĠĠĠĠĠĠ Ġhandle FullScreen Info Changes () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġshow Edit Intent ( item : ĠAd vert iser ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠAd vert iser Config Activity . new Intent ( item . data , Ġadvert iser Adapter . items . indexOf ( item ), Ġthis ) ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , ĠREQUEST _ CODE _ EDIT ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Item Removed ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadvert iser Adapter . notify Item Removed ( position ) ĊĠĠĠĠĠĠĠ Ġadvert iser Adapter . notify Item Range Changed ( position Ġ- Ġ 1 , Ġ 2 , ĠUnit ) ĊĠĠĠĠĠĠĠ Ġhandle FullScreen Info Changes () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrefresh Item ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĠĠĠĠĠĠĠ Ġintent . action Ġ= ĠACTION _ UPDATE _ ITEM _ VIEW ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( EXTRA _ ITEM _ POSITION , Ġposition ) ĊĠĠĠĠĠĠĠ Ġsend Broadcast ( intent ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġswitch Item On ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter . switch Item On ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġswitch Item Off ( position : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġpresenter . switch Item Off ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĠĠĠĠĠĠĠ Ġadvert iser Adapter . notify DataSet Changed () ĊĊĠĠĠĠĠĠĠ Ġis Bluetooth Adapter Enabled Ġ= ĠBluetooth Adapter . getDefault Adapter ()?. isEnabled Ġ?: Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Bluetooth Adapter Enabled ) Ġbluetooth Enable Bar . show () Ġelse Ġbluetooth Enable Bar . hide () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠĠĠĠĠ Ġpresenter . persist Data () ĊĠĠĠĠĠĠĠ Ġunregister Receiver ( broadcast Receiver ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġunregister Receiver ( bluetooth Receiver ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart Ad vert iser Service () Ġ{ ĊĠĠĠĠĠĠĠ ĠAd vert iser Service . start Service ( this @ Ad vert iser Activity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstop Ad vert iser Service () Ġ{ ĊĠĠĠĠĠĠĠ ĠAd vert iser Service . stop Service ( this @ Ad vert iser Activity ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( result Code Ġ== ĠActivity . RESULT _ OK Ġ&& Ġrequest Code Ġ== ĠREQUEST _ CODE _ EDIT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġadvert iser Data Ġ= Ġdata ?. extras ?. get Parcelable < Ad vert iser Data >( Ad vert iser Config Activity . EXTRA _ AD VERT IS ER _ ITEM ) Ġas ĠAd vert iser Data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġdata . getInt Extra ( EXTRA _ ITEM _ POSITION , Ġ 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġadvert iser Adapter . items [ position ]. data Ġ= Ġadvert iser Data ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadvert iser Adapter . notify Item Changed ( position ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhandle FullScreen Info Changes () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( advert iser Adapter . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfull Screen Info . show () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv _ advert iser . visibility Ġ= ĠView . IN VISIBLE ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfull Screen Info . hide () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrv _ advert iser . visibility Ġ= ĠView . VISIBLE ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġval Ġintent Filter Ġ= ĠIntent Filter () ĊĠĠĠĠĠĠĠ Ġintent Filter . addAction ( ACTION _ UPDATE _ ITEM _ VIEW ) ĊĠĠĠĠĠĠĠ Ġregister Receiver ( broadcast Receiver , Ġintent Filter ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbroadcast Receiver Ġ= Ġobject Ġ: ĠBroadcast Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Receive ( context : ĠContext ?, Ġintent : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġintent ?. getInt Extra ( EXTRA _ ITEM _ POSITION , Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġposition ?. let Ġ{ Ġif Ġ( position Ġ!= Ġ- 1 ) Ġrv _ advert iser ?. post Ġ{ Ġadvert iser Adapter . notify Item Changed ( position , ĠUnit ) Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ