import Ġjava . io . Buffered OutputStream Ċ import Ġjava . io . BufferedReader Ċ import Ġjava . io . Buffered Writer Ċ import Ġjava . io . OutputStream Writer Ċ import Ġjavax . bluetooth .* Ċ import Ġjavax . micro edition . io . Connector Ċ import Ġjavax . micro edition . io . Stream Connection ĊĊ Ċ class ĠB t Ctrl Ġ{ ĊĠĠĠ Ġprivate Ġval Ġuuid Ġ= ĠUUID (" 0 0 0 0 1 1 0 1 - 0 0 0 0 - 1 0 0 0 - 8 0 0 0 - 0 0 8 0 5 f 9 b 3 4 fb ". replace ("- ", Ġ""), Ġfalse ) ĊĊĠĠĠ Ġfun Ġinit () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġld Ġ= ĠLocal Device . getLocal Device () ĊĠĠĠĠĠĠĠ Ġprintln (" Local Device : Ġ$ ld , Ġfriendly Ġname : Ġ${ ld . friendly Name }, Ġclass : Ġ${ ld . device Class }") ĊĠĠĠĠĠĠĠ Ġval Ġmac : ĠString Ġ= Ġld . bluetooth Address ĊĠĠĠĠĠĠĠ Ġprintln (" Address :$ mac ") ĊĠĠĠĠĠĠĠ Ġval Ġagent : ĠDiscovery Agent Ġ= Ġld . discovery Agent ĊĠĠĠĠĠĠĠ Ġprintln (" agent : Ġ$ agent ") ĊĊĊĠĠĠĠĠĠĠ Ġagent . start In quiry ( Discovery Agent . GI AC , Ġobject Ġ: ĠDiscovery Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdevice Dis covered ( bt Device : ĠRemote Device ?, Ġcod : ĠDevice Class ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdev Class Ġ= Ġif Ġ( cod Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" {$ cod , Ġserv : Ġ${ Integer . to HexString ( cod . service Classes )}, Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" major : Ġ${ Integer . to HexString ( cod . major Device Class )}, Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" minor : Ġ${ Integer . to HexString ( cod . minor Device Class )}}" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" {$ cod }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdevice Info Ġ= Ġif Ġ( bt Device Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ bt Device Ġ- Ġ${ bt Device :: class . java . simple Name }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ bt Device " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" devices Ġ=> Ġdevice Dis covered (): Ġbt Device : Ġ$ device Info , Ġdevice Ġclass : Ġ$ dev Class ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbt Device ?. apply Ġ{ Ġdiscover Services ( agent , Ġthis ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġin quiry Completed ( disc Type : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" devices Ġ=> Ġin quiry Completed (): Ġdisc Type : Ġ${ Bt Helper . desc Type ToString ( disc Type )} ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġservices Dis covered ( trans ID : ĠInt , Ġserv Record : ĠArray < out ĠService Record > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" devices Ġ=> Ġservices Dis covered (): Ġtrans ID : Ġ$ trans ID , Ġserv Record : Ġ$ serv Record ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġservice Search Completed ( trans ID : ĠInt , Ġresp Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" devices Ġ=> Ġservice Search Completed (): Ġtrans ID : Ġ$ trans ID , Ġresp Code : Ġ$ resp Code ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdiscover Services ( agent : ĠDiscovery Agent , Ġbt Device : ĠRemote Device ) Ġ{ ĊĠĠĠĠĠĠĠ Ġagent . search Services ( array Of ( 0 x 0 0 0 1 , Ġ 0 x 0 1 0 0 ). to IntArray (), ĠarrayOf ( uuid ), Ġbt Device , Ġobject Ġ: ĠDiscovery Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġservices Dis covered ( trans ID : ĠInt , Ġserv Record : ĠArray < out ĠService Record > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" service Ġ=> Ġ(${ bt Device }): Ġservices Dis covered (): Ġtrans ID : Ġ$ trans ID , Ġserv Record : Ġ${ serv Record ?. content ToString () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserv Record ?. forEach Ġ{ Ġconnect ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġservice Search Completed ( trans ID : ĠInt , Ġresp Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" service Ġ=> Ġ(${ bt Device }): Ġservice Search Completed (): Ġtrans ID : Ġ$ trans ID , Ġresp Code : Ġ$ resp Code ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdevice Dis covered ( bt Device : ĠRemote Device ?, Ġcod : ĠDevice Class ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" service Ġ=> Ġ(${ bt Device }): Ġdevice Dis covered (): Ġbt Device : Ġ$ bt Device , Ġcod : Ġ$ cod ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġin quiry Completed ( disc Type : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" service Ġ=> Ġ(${ bt Device }): Ġin quiry Completed (): Ġdisc Type : Ġ$ disc Type ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconnect ( record : ĠService Record ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln (" connect (): Ġrecord : Ġ$ record ") ĊĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġrecord . getConnection URL ( Service Record . NO AUTHENT ICATE _ NO ENCRYPT , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġprintln (" connect (): Ġurl : Ġ$ url ") ĊĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= ĠConnector . open ( url ) ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( connection Ġis ĠStream Connection ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġos Ġ= Ġconnection . open Data OutputStream () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġos . write Byte ( 1 5 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġos . flush () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġos . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnection . close () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ 0 0 0 0 1 1 0 1 - 0 0 0 0 - 1 0 0 0 - 8 0 0 0 - 0 0 8 0 5 f 9 b 3 4 fb ĊĊĠĠĠ Ġfun Ġrelease () Ġ{ ĊĊĠĠĠ Ġ} Ċ Ċ }