package Ġcom . kr z ys z ot f . temp station Ċ Ċ import Ġandroid . bluetooth . Bluetooth Adapter Ċ import Ġandroid . bluetooth . Bluetooth Device Ċ import Ġandroid . bluetooth . Bluetooth Socket Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . util . Log Ċ import Ġkotlinx . android . synt hetic . main . activity _ main .* Ċ import Ġjava . io . IOException Ċ import Ġjava . io . InputStream Ċ import Ġjava . io . OutputStream Ċ import Ġjava . nio . file . Files . size Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . os . Handler Ċ import Ġjava . nio . charset . Charset Ċ import Ġjava . util .* ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġvar Ġm Bluetooth Adapter : ĠBluetooth Adapter ? Ġ= ĠBluetooth Adapter . getDefault Adapter () ĊĠĠĠ Ġlateinit Ġvar ĠoutputStream : ĠOutputStream ĊĠĠĠ Ġlateinit Ġvar ĠinputStream : ĠInputStream ĊĠĠĠ Ġvar Ġmm Device : ĠBluetooth Device ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġunit Ġ= Ġ" âĦ ĥ " ĊĠĠĠ Ġvar Ġcalculate F ah ren heit Ġ= Ġfalse ĊĠĠĠ Ġlateinit Ġvar Ġmm Socket : ĠBluetooth Socket ĊĠĠĠ Ġ@ Volatile ĊĠĠĠ Ġvar Ġstop Worker : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġopen . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Bluetooth () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġopen Bluetooth Connection () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġclose . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclose Bluetooth Connection () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcatch Ġ( ex : ĠIOException ){} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġc els ius Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit Ġ= Ġresources . getString ( R . string . cel s ius ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculate F ah ren heit Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfa hren heit Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunit Ġ= Ġresources . getString ( R . string . fahren heit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcalculate F ah ren heit Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind Bluetooth () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Bluetooth Adapter Ġ= ĠBluetooth Adapter . getDefault Adapter () ĊĠĠĠĠĠĠĠ Ġif Ġ( m Bluetooth Adapter Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Label . text Ġ= Ġ" Adapter Ġbluetooth Ġnie Ġjest Ġdost ÄĻp ny " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! m Bluetooth Adapter !!. isEnabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġenable Bluetooth Ġ= ĠIntent ( Bluetooth Adapter . ACTION _ REQUEST _ ENABLE ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstartActivity For Result ( enable Bluetooth , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġpaired Devices Ġ= Ġm Bluetooth Adapter !!. bon ded Devices ĊĠĠĠĠĠĠĠ Ġif Ġ( paired Devices . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( device Ġin Ġpaired Devices ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( device . name Ġ== Ġ" raspberry pi ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmm Device Ġ= Ġdevice ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġstatus Label . text Ġ= Ġ" Zn ale z ion o Ġst ac jÄĻ " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġopen Bluetooth Connection () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuuid Ġ= ĠUUID . fromString (" 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 ") ĊĠĠĠĠĠĠĠ Ġmm Socket Ġ= Ġmm Device !!. create Rf comm Socket To Service Record ( uuid ) ĊĠĠĠĠĠĠĠ Ġmm Socket . connect () ĊĠĠĠĠĠĠĠ ĠoutputStream Ġ= Ġmm Socket . output Stream ĊĠĠĠĠĠĠĠ ĠinputStream Ġ= Ġmm Socket . inputStream ĊĊĠĠĠĠĠĠĠ Ġbegin Listen For Data () ĊĊĠĠĠĠĠĠĠ Ġstatus Label . text Ġ= Ġ" Po ÅĤÄħc zon o Ġze Ġst ac jÄħ " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbegin Listen For Data () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhandler Ġ= ĠHandler () ĊĠĠĠĠĠĠĠ Ġval Ġdelimiter : ĠByte Ġ= Ġ 1 0 Ġ// K od ĠASCII ĠnastÄĻ p nej Ġlin ij ki ĊĠĠĠĠĠĠĠ Ġstop Worker Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġvar Ġread Buffer Position Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġval Ġread Buffer Ġ= ĠByteArray ( 1 0 2 4 ) ĊĠĠĠĠĠĠĠ Ġval Ġworker Thread Ġ= ĠThread ( Runnable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ(! Thread . currentThread (). is Inter rupted Ġ&& Ġ! stop Worker ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbytes Available Ġ= ĠinputStream . available () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( bytes Available Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpacket Bytes Ġ= ĠByteArray ( bytes Available ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠinputStream . read ( packet Bytes ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpacket Bytes . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġdelimiter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġencoded Bytes Ġ= ĠByteArray ( read Buffer Position ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . arraycopy ( read Buffer , Ġ 0 , Ġencoded Bytes , Ġ 0 , Ġencoded Bytes . count ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdata Ġ= ĠString ( encoded Bytes , ĠCharset . forName (" US - ASCII ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread Buffer Position Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġfinal Temperature ( data . toFloat ()). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhandler . post Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtemp TextView . text Ġ= Ġ"$ data Ġ$ unit " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġread Buffer [ read Buffer Position ++] Ġ= Ġi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstop Worker Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġworker Thread . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfinal Temperature ( current Temperature : ĠFloat ): ĠFloat { ĊĠĠĠĠĠĠĠ Ġif ( calculate F ah ren heit ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcurrent Temperature Ġ* Ġ 1 . 8 f Ġ+ Ġ 3 2 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcurrent Temperature ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġclose Bluetooth Connection () Ġ{ ĊĠĠĠĠĠĠĠ Ġstop Worker Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠoutputStream . close () ĊĠĠĠĠĠĠĠ ĠinputStream . close () ĊĠĠĠĠĠĠĠ Ġmm Socket . close () ĊĠĠĠĠĠĠĠ Ġstatus Label . text Ġ= Ġ" Z am k ni ÄĻ to Ġpo ÅĤÄħc zenie " ĊĠĠĠ Ġ} Ċ Ċ } Ċ