package Ġorg . t cn co al ition . t cn client Ċ Ċ import Ġandroid . app . Notification Ċ import Ġandroid . bluetooth . Bluetooth Adapter Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Binder Ċ import Ġandroid . os . IB inder Ċ import Ġandroidx . lifecycle . Lifecycle Service Ċ import Ġorg . t cn co al ition . t cn client . c en . C en Generator Ċ import Ġorg . t cn co al ition . t cn client . c en . C en Visitor Ċ import Ġjava . util .* Ċ Ċ class ĠBluetooth Service Ġ: ĠLifecycle Service () Ġ{ ĊĊĠĠĠ Ġprivate Ġvar Ġconfig : ĠService Configuration ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġc en Ad vert iser : ĠC en Ad vert iser ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġc en Scanner : ĠC en Scanner ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġbinder : ĠI Binder Ġ= ĠLocal Binder () ĊĊĠĠĠ Ġoverride Ġfun ĠonStart Command ( intent : ĠIntent ?, Ġflags : ĠInt , Ġstart Id : ĠInt ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart Command ( intent , Ġflags , Ġstart Id ) ĊĠĠĠĠĠĠĠ Ġreturn ĠSTART _ STICK Y ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġc en Ad vert iser ?. stop Ad vert iser () ĊĠĠĠĠĠĠĠ Ġc en Scanner ?. stop Sc anning () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Bind ( intent : ĠIntent ): ĠI Binder ? Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Bind ( intent ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinder ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠBluetooth Adapter . supports Ad vertising () Ġ= ĊĠĠĠĠĠĠĠ Ġis Multiple Ad vertisement Supported Ġ&& Ġbluetooth Le Ad vert iser Ġ!= Ġnull ĊĊĠĠĠ Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġconfig ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Foreground ( NOTIFICATION _ ID , Ġforeground Notification ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbluetooth Adapter Ġ= ĠBluetooth Adapter . getDefault Adapter () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġad vertise ĠC EN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc en Ad vert iser Ġ= ĠC en Ad vert iser ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Bluetooth Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Adapter . bluetooth Le Ad vert iser , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCONT ACT _ EVENT _ SERVICE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCONT ACT _ EVENT _ IDENTIFIER _ CHARACTER ISTIC , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc en Visitor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc en Generator ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġscan ĠC EN s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc en Scanner Ġ= ĠC en Scanner ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis @ Bluetooth Service , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbluetooth Adapter . bluetooth Le Scanner , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCONT ACT _ EVENT _ SERVICE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc en Visitor ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc en Ad vert iser ?. start Ad vert iser ( CONTACT _ EVENT _ SERVICE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc en Scanner ?. start Sc anning ( array Of ( CONTACT _ EVENT _ SERVICE ), Ġ 1 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconfigure ( configuration : ĠService Configuration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . config Ġ= Ġconfiguration ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate C en () Ġ{ ĊĠĠĠĠĠĠĠ Ġc en Ad vert iser ?. update C EN () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart Ad vert iser () Ġ{ ĊĠĠĠĠĠĠĠ Ġc en Ad vert iser ?. start Ad vert iser ( CONTACT _ EVENT _ SERVICE ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstop Ad vert iser () Ġ{ ĊĠĠĠĠĠĠĠ Ġc en Ad vert iser ?. stop Ad vert iser () ĊĠĠĠĠĠĠĠ Ġc en Scanner ?. stop Sc anning () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠService Configuration ( ĊĠĠĠĠĠĠĠ Ġval Ġc en Generator : ĠC en Generator , ĊĠĠĠĠĠĠĠ Ġval Ġc en Visitor : ĠC en Visitor , ĊĠĠĠĠĠĠĠ Ġvar Ġforeground Notification : ĠNotification ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġinner Ġclass ĠLocal Binder Ġ: ĠB inder () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= Ġthis @ Bluetooth Service ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠNOT IFICATION _ ID Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġstring Ġrepresentation Ġof Ġthe ĠUUID Ġfor Ġthe Ġprimary Ġperipheral Ġservice ĊĠĠĠĠĠĠĠ Ġval ĠCONT ACT _ EVENT _ SERVICE : ĠUUID Ġ= ĠUUID . fromString (" 0 0 0 0 C 0 1 9 - 0 0 0 0 - 1 0 0 0 - 8 0 0 0 - 0 0 8 0 5 F 9 B 3 4 FB ") ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġstring Ġrepresentation Ġof Ġthe ĠUUID Ġfor Ġthe Ġcontact Ġevent Ġidentifier Ġcharacteristic ĊĠĠĠĠĠĠĠ Ġval ĠCONT ACT _ EVENT _ IDENTIFIER _ CHARACTER ISTIC : ĠUUID Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUUID . fromString (" D 6 1 F 4 F 2 7 - 3 D 6 B - 4 B 0 4 - 9 E 4 6 - C 9 D 2 EA 6 1 7 F 6 2 ") ĊĠĠĠ Ġ} Ċ } Ċ