package Ġcom . main p ck g . doc u . BT Classes Ċ Ċ import Ġandroid . bluetooth . Bluetooth Socket Ċ import Ġandroid . util . Log Ċ import Ġcom . main p ck g . doc u . MainActivity Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ import Ġjava . io . OutputStream Ċ Ċ class ĠConnected Thread ( private Ġval Ġmm Socket : ĠBluetooth Socket ) Ġ: ĠThread () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġtag : ĠString Ġ= Ġ" Connected Thread " ĊĠĠĠ Ġprivate Ġval Ġmm In Stream : ĠInputStream ? ĊĠĠĠ Ġprivate Ġval Ġmm Out Stream : ĠOutputStream ? ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġtmp In : ĠInputStream ? Ġ= Ġ Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġtmp Out : ĠOutputStream ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ ĠLog . d ( tag , Ġ" Connected ĠThread ĠInitialized !") ĊĠĠĠĠĠĠĠ Ġ// ĠGet Ġthe Ġinput Ġand Ġoutput Ġstreams , Ġusing Ġtemp Ġobjects ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtmp In Ġ= Ġmm Socket . inputStream ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtmp Out Ġ= Ġmm Socket . output Stream ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" e ", Ġe . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġmm In Stream Ġ= Ġtmp In ĊĠĠĠĠĠĠĠ Ġmm Out Stream Ġ= Ġtmp Out ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġrun () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠByteArray ( 1 0 2 4 ) Ġ// Ġbuffer Ġstore Ġfor Ġthe Ġstream ĊĠĠĠĠĠĠĠ Ġvar Ġbytes Ġ= Ġ 0 Ġ// Ġbytes Ġreturned Ġfrom Ġread () ĊĠĠĠĠĠĠĠ ĠLog . d ( tag , Ġ" Connected ĠThread ĠRunning !") ĊĠĠĠĠĠĠĠ Ġ// ĠKeep Ġlistening Ġto Ġthe ĠInputStream Ġuntil Ġan Ġexception Ġoccurs ĊĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuffer [ bytes ] Ġ= Ġmm In Stream !!. read (). to Byte () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġread Message : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( buffer [ bytes ]. toInt () Ġ== Ġ 1 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread Message Ġ= ĠString ( buffer , Ġ 0 , Ġbytes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( tag , Ġ" Message Ġreceived : Ġ$ read Message ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . handler ?. obtain Message ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMainActivity . MESSAGE _ READ , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread Message ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ?. send To Target () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbytes Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbytes ++ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠWrite Ġdu ĠArduino ĊĠĠĠ Ġfun Ġwrite ( input : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbytes Ġ= Ġinput . toByteArray () ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmm Out Stream !!. write ( bytes ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġe . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠShutdown Ġthe Ġconnection Ġbetween Ġmobile Ġdevice Ġand ĠArduino ĊĠĠĠ Ġfun Ġcancel () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmm Socket . close () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( tag , Ġe . toString ()) ĊĠĠĠĠĠĠĠ Ġ} Ġfinally Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( tag , Ġ" Connected ĠThread Ġis Ġcancelled ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ