package Ġcom . jon pas . sense xp Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . util . Log Ċ import Ġorg . eclipse . p aho . android . service . Mqtt Android Client Ċ import Ġorg . eclipse . p aho . client . mqtt v 3 .* ĊĊ Ċ class ĠMQTT ( context : ĠContext ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠTAG : ĠString Ġ= ĠMQTT :: class . java . simple Name ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSERVER _ URI : ĠString Ġ= ĠBuild Config . MQTT _ SERVER _ URI ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠUSER NAME : ĠString Ġ= ĠBuild Config . MQTT _ USERNAME ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠPASSWORD : ĠString Ġ= ĠBuild Config . MQTT _ PASSWORD ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠP UB L ISH _ TOPIC : ĠString Ġ= ĠBuild Config . MQTT _ PUBL ISH _ TOPIC ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġclient : ĠM qtt Android Client ĊĠĠĠ Ġprivate Ġvar ĠclientId Ġ= ĠM qtt Client . generate ClientId () ĊĠĠĠ Ġprivate Ġvar Ġq os : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġclient Ġ= ĠM qtt Android Client ( context , ĠSERVER _ URI , ĠclientId ) ĊĠĠĠĠĠĠĠ Ġclient . set Callback ( object Ġ: ĠM qtt Callback Extended Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconnect Complete ( b : ĠBoolean , Ġs : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġs ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġconnection Lost ( throwable : ĠThrowable ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmessage Ar rived ( topic : ĠString , Ġmqtt Message : ĠM qtt Message ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġmqtt Message . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdelivery Complete ( i Mqtt Delivery Token : ĠIM qtt Delivery Token ) Ġ{} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconnect () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconnect Options Ġ= ĠM qtt Connect Options () ĊĠĠĠĠĠĠĠ Ġconnect Options . mqtt Version Ġ= ĠM qtt Connect Options . MQTT _ VERSION _ 3 _ 1 _ 1 ĊĠĠĠĠĠĠĠ Ġconnect Options . is Automatic Re connect Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġconnect Options . userName Ġ= ĠUSER NAME ĊĠĠĠĠĠĠĠ Ġconnect Options . password Ġ= ĠPASSWORD . toCharArray () ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . connect ( connect Options , Ġnull , Ġobject : ĠIM qtt ActionListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( async Action Token : ĠIM qtt Token ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdisconnected Buffer Opts Ġ= ĠDis connected Buffer Options () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisconnected Buffer Opts . is Buffer Enabled Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisconnected Buffer Opts . buffer Size Ġ= Ġ 1 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisconnected Buffer Opts . is Persist Buffer Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisconnected Buffer Opts . is Delete Ol dest Messages Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient . set Buffer Opts ( disconnected Buffer Opts ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( async Action Token : ĠIM qtt Token , Ġexception : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġ" Failed Ġto Ġconnect Ġto : Ġ$ SERVER _ URI \ n $ exception ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠM qtt Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace (); ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdisconnect () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . close () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠM qtt Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġpublish ( message : ĠString , Ġtopic : ĠString Ġ= ĠP UB L ISH _ TOPIC ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( client . isConnected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmqtt Message Ġ= ĠM qtt Message ( message . toByteArray ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmqtt Message . qos Ġ= Ġq os ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient . publish ( topic , Ġmqtt Message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠM qtt Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠCheck Ġif Ġconfiguration Ġis Ġproperly Ġdefined Ġ( not Ġdefault Ġempty ) ĊĠĠĠ Ġfun ĠisValid (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSERVER _ URI . isNotBlank () ĊĠĠĠ Ġ} Ċ } Ċ