package Ġio . so gn . dial er Ċ Ċ import Ġandroid . annotation . Target Api Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Uri Ċ import Ġandroid . os . Build Ċ import Ġandroid . tele com . Call Ċ import Ġandroid . tele com . Tele com Manager Ċ import Ġandroid . util . Log Ċ Ċ @ Target Api ( Build . VERSION _ CODES . M ) Ċ class ĠCall Manager Ġprivate Ġconstructor ( context : ĠContext ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġm Tele com Manager : ĠTele com Manager ĊĠĠĠ Ġprivate Ġvar ĠmCurrent Call : ĠCall ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġvar Ġm State Listener : ĠState Listener ? Ġ= Ġnull ĊĊĠĠĠ Ġval Ġui Call : ĠUi Call ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠUi Call . convert ( m Current Call ) ĊĊĠĠĠ Ġinterface ĠState Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġon Call StateChanged ( call : ĠUi Call ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" init ĠCall Manager ") ĊĊĠĠĠĠĠĠĠ Ġm Tele com Manager Ġ= Ġcontext . getSystem Service ( Context . TELE COM _ SERVICE ) Ġas ĠTele com Manager ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġregister Listener ( listener : ĠState Listener ) Ġ{ ĊĠĠĠĠĠĠĠ Ġm State Listener Ġ= Ġlistener ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġunregister Listener () Ġ{ ĊĠĠĠĠĠĠĠ Ġm State Listener Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate Call ( call : ĠCall ) Ġ{ ĊĠĠĠĠĠĠĠ ĠmCurrent Call Ġ= Ġcall ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m State Listener Ġ!= Ġnull Ġ&& ĠmCurrent Call Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm State Listener !!. on Call StateChanged ( Ui Call . convert ( m Current Call )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġplace Call ( number : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuri Ġ= ĠUri . from Parts (" tel ", Ġnumber , Ġnull ) ĊĠĠĠĠĠĠĠ Ġm Tele com Manager . place Call ( uri , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcancel Call () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( m Current Call Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( m Current Call !!. state Ġ== ĠCall . STATE _ RING ING ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreject Call () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisconnect Call () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġaccept Call () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" accept Call ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Current Call Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmCurrent Call !!. answer ( m Current Call !!. details . video State ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreject Call () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" reject Call ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Current Call Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmCurrent Call !!. reject ( false , Ġ"") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisconnect Call () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . i ( TAG , Ġ" disconnect Call ") ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m Current Call Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmCurrent Call !!. disconnect () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠTAG Ġ= Ġ" Call Manager " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġs Instance : ĠCall Manager ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfun Ġinit ( application Context : ĠContext ): ĠCall Manager Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( s Instance Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs Instance Ġ= ĠCall Manager ( application Context ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Call Manager Ġhas Ġbeen Ġinitialized .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġs Instance Ġas ĠCall Manager ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġget (): ĠCall Manager Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠcheckNotNull ( s Instance ) Ġ{ Ġ" Call ĠCall Manager . init ( Context ) Ġbefore Ġcalling Ġthis Ġfunction ." Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġs Instance Ġas ĠCall Manager ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ