package Ġbr . uf pr . nr 2 . mob ange lo . bluetooth . threads Ċ Ċ import Ġandroid . bluetooth . Bluetooth Device Ċ import Ġandroid . bluetooth . Bluetooth Socket Ċ import Ġandroid . util . Log Ċ import Ġbr . uf pr . nr 2 . mob ange lo . bluetooth . Threads Manager Ċ import Ġbr . uf pr . nr 2 . mob ange lo . bluetooth . Constants Ċ import Ġjava . io . IOException Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠThis Ġthread Ġruns Ġwhile Ġattempting Ġto Ġmake Ġan Ġoutgoing Ġconnection Ċ Ġ* Ġwith Ġa Ġdevice . ĠIt Ġruns Ġstraight Ġthrough ; Ġthe Ġconnection Ġeither Ċ Ġ* Ġsucceeds Ġor Ġfails . Ċ Ġ*/ Ċ class ĠConnect Thread ( private Ġval Ġmm Device : ĠBluetooth Device , Ġuuid To Try : ĠUUID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġservice : ĠThread s Manager Ċ ) Ġ: ĊĠĠĠ ĠThread () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġmm Socket : ĠBluetooth Socket ? ĊĠĠĠ Ġprivate Ġval Ġtemp Uuid : ĠUUID ? ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtmp : ĠBluetooth Socket ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġtemp Uuid Ġ= Ġuuid To Try ĊĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġa ĠBluetooth Socket Ġfor Ġa Ġconnection Ġwith Ġthe ĊĠĠĠĠĠĠĠ Ġ// Ġgiven ĠBluetooth Device ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Ġ= Ġmm Device . create In secure Rf comm Socket To Service Record ( uuid To Try ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . TAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ Connect ĠThread ] Ġcreate () Ġfailed ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmm Socket Ġ= Ġtmp ĊĠĠĠĠĠĠĠ ĠLog . d ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . TAG , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ Connect ĠThread ] ĠStatus : Ġ${ service . m State }" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ Ċ // ĠĠĠĠĠĠĠĠĠĠĠ ĠSet Ġthread Ġname ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġ" Connect Thread In secure " ĊĠĠĠĠĠĠĠ ĠLog . i ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . TAG , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ Connect ĠThread ] ĠBEGIN Ġm Connect Thread Ġ$ this " ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠAlways Ġcancel Ġdiscovery Ġbecause Ġit Ġwill Ġslow Ġdown Ġa Ġconnection ĊĠĠĠĠĠĠĠ Ġif ( service . bt Adapter . is Discover ing ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . TAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ Connect ĠThread ] ĠC ancell ing Ġdiscovery ..." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSince Ġdiscovery Ġshould Ġnever Ġbe Ġrunning Ġat Ġthis Ġpoint Ġin Ġtime , Ġthis Ġis Ġjust Ġa Ġsanity Ġcheck ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . bt Adapter . cancel Discovery () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠMake Ġa Ġconnection Ġto Ġthe ĠBluetooth Socket ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġa Ġblocking Ġcall Ġand Ġwill Ġonly Ġreturn Ġon Ġa ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġsuccessful Ġconnection Ġor Ġan Ġexception ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmm Socket !!. connect () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠClose Ġthe Ġsocket ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmm Socket !!. close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e 2 : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . TAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ Connect ĠThread ] Ġunable Ġto Ġclose () Ġsocket Ġduring Ġconnection Ġfailure ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . connection Failed ( mm Device ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e 5 : ĠException ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . TAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ Connect ĠThread ] ĠUnexpected Ġerror :", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe 5 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . m State . set ( Threads Manager . STATE _ ERROR ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe 5 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠLog . d ( Constants . TAG , Ġ"[ Connect ĠThread ] ĠConnection Ġsuccess !") ĊĠĠĠĠĠĠĠ Ġ// ĠReset Ġthe ĠConnect Thread Ġbecause Ġwe 're Ġdone ĊĠĠĠĠĠĠĠ Ġsynchronized ( service ) Ġ{ Ġservice . m Connect Thread Ġ= Ġnull Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠStart Ġthe Ġconnected Ġthread ĊĠĠĠĠĠĠĠ Ġservice . connected ( mm Socket , Ġmm Device , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThread s Manager . STATE _ CONNECT ING ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ ĠLog . d ( Constants . TAG , Ġ"[ Connect ĠThread ] ĠEnd Ġof Ġthread ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcancel () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . TAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ Connect ĠThread ] ĠClosing Ġsocket ..." ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmm Socket !!. close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( service . m State . get () Ġ== ĠThread s Manager . STATE _ CONNECT ING ){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice . connect Pending Devices () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠConstants . TAG , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"[ Connect ĠThread ] Ġclose () Ġof Ġsocket Ġfailed ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }