package Ġio . code bea vers . sip caller . ui Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Intent Filter Ċ import Ġandroid . media . Tone Generator Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . view . View Ċ Ċ import Ġio . code bea vers . sip caller . R Ċ import Ġio . code bea vers . sip caller . call . Data Receiver Ċ import Ġio . code bea vers . sip caller . util . Sound Manager Ċ import Ġio . code bea vers . sip caller . util . Const Ċ Ċ import Ġkotlinx . android . synt hetic . main . activity _ call .* Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠEv gen y ĠE li sey ev Ġon Ġ 0 4 / 0 2 / 2 0 1 8 . Ċ Ġ*/ Ċ Ċ class ĠCall Activity : ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġm Receiver : ĠData Receiver ? Ġ= Ġnull ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( context : ĠContext , Ġname : ĠString , Ġis Incoming : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( context , ĠCall Activity :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Const . KEY _ IS _ IN COM ING , Ġis Incoming ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent . putExtra ( Const . KEY _ NAME , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Incoming (): ĠBoolean Ġ= Ġintent . getBoolean Extra ( Const . KEY _ IS _ IN COM ING , Ġfalse ) ĊĊĠĠĠ Ġ// ĠRegisters Ġreceiver . ĊĠĠĠ Ġ// ĠAlso Ġstarts Ġring ing Ġfor Ġincoming Ġcall . ĊĠĠĠ Ġ// ĠAnd Ġstarts Ġdial Ġt ones Ġfor Ġoutgoing Ġcall . ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ call ) ĊĠĠĠĠĠĠĠ Ġval Ġsound Manager Ġ= ĠSound Manager . getInstance ( this ) ĊĠĠĠĠĠĠĠ Ġval Ġfilter Ġ= ĠIntent Filter ( Const . ACTION _ DATA _ TO _ ACTIVITY _ EX CHANGE ) ĊĊĠĠĠĠĠĠĠ Ġunregister Receiver () ĊĠĠĠĠĠĠĠ Ġm Receiver Ġ= ĠData Receiver () ĊĠĠĠĠĠĠĠ Ġregister Receiver ( m Receiver , Ġfilter ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Incoming ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsound Manager . start Ring ing () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsound Manager . start Tone ( Tone Generator . T ONE _ SUP _ RING T ONE ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate Call Status ( Const . S ip Call . STARTED ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġunregister Receiver () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠPre vents Ġgoing Ġback Ġwith Ġhardware Ġbutton . ĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" NON _ EX HA UST IVE _ WHEN ") ĊĠĠĠ Ġfun Ġupdate Call Status ( status : ĠConst . S ip Call ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( status ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConst . S ip Call . STARTED Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Incoming ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgreen Button . text Ġ= ĠgetString ( R . string . call _ answer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġred Button . text Ġ= ĠgetString ( R . string . call _ decl ine ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgreen Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgreen Button . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġred Button . text Ġ= ĠgetString ( R . string . call _ end ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Broadcast ( get Intent For Status Of Call ( Const . S ip Call . AN SW ER ED )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgreen Button . visibility Ġ= ĠView . GONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġred Button . text Ġ= ĠgetString ( R . string . call _ end ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . text Ġ= Ġintent . getString Extra ( Const . KEY _ NAME ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġred Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsend Broadcast ( get Intent For Status Of Call ( Const . S ip Call . ENDED )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfinish () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠConst . S ip Call . ENDED Ġ-> Ġfinish () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Intent For Status Of Call ( status : ĠConst . S ip Call ): ĠIntent Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent () ĊĊĠĠĠĠĠĠĠ Ġintent . action Ġ= ĠConst . ACTION _ DATA _ TO _ SERVICE _ EX CHANGE ĊĠĠĠĠĠĠĠ Ġintent . putExtra ( Const . KEY _ STATUS , Ġstatus ) ĊĠĠĠĠĠĠĠ Ġreturn Ġintent ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġunregister Receiver () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Receiver Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġunregister Receiver ( m Receiver ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Receiver Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }