package Ġw orm hole logger . log Ċ Ċ import Ġandroid . content . Component Name Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . Service Connection Ċ import Ġandroid . os . IB inder Ċ import Ġw orm hole logger . common . Wh Logger Ċ import Ġw orm hole logger . common . Wh Logger Constants Ċ import Ġw orm hole logger . common . Wh Logger _ Proxy Ċ import Ġw orm hole logger . log . internal . Logger Ċ import Ġw orm hole logger . log . internal . Wh Logger Router Ċ Ċ /** Ċ Ġ* ĠLog Ġwrapper Ġfor Ġ[ android . util . Log ]. Ċ Ġ* ĠThis Ġwill Ġsend Ġthe Ġformat And Log Ġto Ġremote Ġw orm hole Ġ( firebase ) Ġif Ġa Ġw orm hole Ġportal Ġis Ġinstalled , Ġif Ġnot Ġit Ġlogs Ċ Ġ* Ġto Ġthe Ġstandard Ġ[ android . util . Log ] Ċ Ġ*/ Ċ class ĠLog Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcontext : ĠContext ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠpackageName : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġservice Connection Ġ= Ġobject Ġ: ĠService Connection Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Service Disconnected ( p 0 : ĠComponent Name ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger Ġ= ĠLogger () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Connected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Service Connected ( p 0 : ĠComponent Name ?, Ġp 1 : ĠI Binder ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlogger Proxy : ĠWh Logger Ġ= ĠWh Logger _ Proxy ( p 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . util . Log . v (" Wh Log ", Ġ" Connected Ġto ĠWh Log Service ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( logger Proxy . register ( packageName )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger Ġ= ĠWh Logger Router ( logger Proxy , ĠpackageName !! ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Connected Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . util . Log . v (" Wh Log ", Ġ" Registered Ġto ĠWh Log Service ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . util . Log . v (" Wh Log ", Ġ" Failed Ġto Ġregister Ġto ĠWh Log Service ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. unbind Service ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġtrue , Ġthen Ġthe ĠLogger Ġis Ġconnected Ġto Ġremote Ġservice Ġand Ġlogs ĊĠĠĠĠĠĠĠĠ Ġ* Ġare Ġbeing Ġtransferred Ġthrough Ġthe Ġw orm hole ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġvar Ġis Connected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġlogger : ĠLogger Ġ= ĠLogger () ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠInitialize Ġthe ĠW orm hole Logger Ġ[ Log ] Ġclient ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġ[ Context ] Ġof Ġclient Ġapp ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ see Ġ[ Log . destroy ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġinit ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . context Ġ= Ġcontext ĊĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName Ġ= Ġcontext . packageName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Wh Logger Constants . WH _ LOGGER _ INT ENT ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġservice List Ġ= Ġcontext . package Manager . query Intent Services ( intent , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( service List Ġ!= Ġnull Ġ&& Ġservice List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġservice Info Ġ= Ġservice List . first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( service Info . service Info Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Intent Ġ= ĠIntent (). set ClassName ( service Info . service Info . packageName , Ġservice Info . service Info . name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid . util . Log . v (" Wh Log ", Ġ" Found ĠWh Log Service Ġ$ s Intent ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . bind Service ( s Intent , Ġservice Connection , ĠContext . BIND _ AUTO _ CREATE ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCalled Ġduring Ġon Destroy Ġto Ġclean Ġup Ġany ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġinternal Ġfun Ġdestroy () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( isConnected ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext ?. unbind Service ( service Connection ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Connected Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger Ġ= ĠLogger () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġv ( tag : ĠString , Ġmsg : ĠString ) Ġ= Ġlogger . v ( tag , Ġmsg ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġv ( tag : ĠString , Ġmsg : ĠString , Ġtr : ĠThrowable ) Ġ= Ġlogger . v ( tag , Ġmsg , Ġtr ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġd ( tag : ĠString , Ġmsg : ĠString ) Ġ= Ġlogger . d ( tag , Ġmsg ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġd ( tag : ĠString , Ġmsg : ĠString , Ġtr : ĠThrowable ) Ġ= Ġlogger . d ( tag , Ġmsg , Ġtr ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġi ( tag : ĠString , Ġmsg : ĠString ) Ġ= Ġlogger . i ( tag , Ġmsg ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġi ( tag : ĠString , Ġmsg : ĠString , Ġtr : ĠThrowable ) Ġ= Ġlogger . i ( tag , Ġmsg , Ġtr ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġw ( tag : ĠString , Ġmsg : ĠString ) Ġ= Ġlogger . w ( tag , Ġmsg ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġw ( tag : ĠString , Ġmsg : ĠString , Ġtr : ĠThrowable ) Ġ= Ġlogger . w ( tag , Ġmsg , Ġtr ) ĊĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġw ( tag : ĠString , Ġtr : ĠThrowable ) Ġ= Ġlogger . w ( tag , Ġtr ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġe ( tag : ĠString , Ġmsg : ĠString ) Ġ= Ġlogger . e ( tag , Ġmsg ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġe ( tag : ĠString , Ġmsg : ĠString , Ġtr : ĠThrowable ) Ġ= Ġlogger . e ( tag , Ġmsg , Ġtr ) ĊĊĠĠĠ Ġ} ĊĊ Ċ }