package Ġcom . google . android . col umb us Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . net . Uri Ċ import Ġandroid . provider . Settings Ċ import Ġandroid . util . Log Ċ Ċ class ĠCol umb us Settings ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġcontent Observer Factory : ĠCol umb us Content Observer Factory Ċ ) Ġ{ ĊĊĠĠĠ Ġinterface ĠCol umb us Settings ChangeListener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Alert Sil ence Enabled Change ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Stub ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Col umb us Enabled Change ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Stub ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Low Sensitivity Change ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Stub ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Selected Action Change ( action Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Stub ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Selected App Change ( app : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Stub ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Selected App Shortcut Change ( shortcut : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Stub ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġon Use Ap Sensor Change ( enabled : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Stub ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠTAG Ġ= Ġ" Col umb us / Settings " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ COL UM BUS _ ENABLED Ġ= Ġ" col umb us _ enabled " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ AP _ SENSOR Ġ= Ġ" col umb us _ ap _ sensor " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ ACTION Ġ= Ġ" col umb us _ action " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ LA UNCH _ APP Ġ= Ġ" col umb us _ launch _ app " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ LA UNCH _ APP _ SHORT CUT Ġ= Ġ" col umb us _ launch _ app _ shortcut " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ LOW _ S ENS IT IVITY Ġ= Ġ" col umb us _ low _ s ensitivity " ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠKEY _ SIL ENCE _ AL ER TS Ġ= Ġ" col umb us _ sil ence _ alerts " ĊĠĠĠĠĠĠĠ Ġval ĠCOL UM BUS _ ENABLED _ URI Ġ= ĠSettings . Secure . get Uri For ( KEY _ COL UM BUS _ ENABLED ) ĊĠĠĠĠĠĠĠ Ġval ĠCOL UM BUS _ AP _ SENSOR _ URI Ġ= ĠSettings . Secure . get Uri For ( KEY _ AP _ SENSOR ) ĊĠĠĠĠĠĠĠ Ġval ĠCOL UM BUS _ ACTION _ URI Ġ= ĠSettings . Secure . get Uri For ( KEY _ ACTION ) ĊĠĠĠĠĠĠĠ Ġval ĠCOL UM BUS _ LA UNCH _ APP _ URI Ġ= ĠSettings . Secure . get Uri For ( KEY _ LA UNCH _ APP ) ĊĠĠĠĠĠĠĠ Ġval ĠCOL UM BUS _ LA UNCH _ APP _ SHORT CUT _ URI Ġ= ĠSettings . Secure . get Uri For ( KEY _ LA UNCH _ APP _ SHORT CUT ) ĊĠĠĠĠĠĠĠ Ġval ĠCOL UM BUS _ LOW _ S ENS IT IVITY _ URI Ġ= ĠSettings . Secure . get Uri For ( KEY _ LOW _ S ENS IT IVITY ) ĊĠĠĠĠĠĠĠ Ġval ĠCOL UM BUS _ SIL ENCE _ AL ER TS _ URI Ġ= ĠSettings . Secure . get Uri For ( KEY _ SIL ENCE _ AL ER TS ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠMON IT O RED _ UR IS Ġ= Ġset Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOL UM BUS _ ENABLED _ URI , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOL UM BUS _ AP _ SENSOR _ URI , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOL UM BUS _ ACTION _ URI , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOL UM BUS _ LA UNCH _ APP _ URI , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOL UM BUS _ LA UNCH _ APP _ SHORT CUT _ URI , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOL UM BUS _ LOW _ S ENS IT IVITY _ URI , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOL UM BUS _ SIL ENCE _ AL ER TS _ URI ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcontent Resolver Ġ= Ġcontext . content Resolver ĊĠĠĠ Ġprivate Ġval Ġlisteners Ġ= ĠLinked HashSet < Col umb us Settings ChangeListener >() ĊĠĠĠ Ġprivate Ġvar Ġregistered Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġfun Ġcallback ( uri : ĠUri ? ){ ĊĠĠĠĠĠĠĠ Ġwhen ( uri ){ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOL UM BUS _ ENABLED _ URI Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlisteners . forEach Ġ{ Ġit . on Col umb us Enabled Change ( is Col umb us Enabled ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOL UM BUS _ AP _ SENSOR _ URI Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlisteners . forEach Ġ{ Ġit . on Use Ap Sensor Change ( use Ap Sensor ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOL UM BUS _ ACTION _ URI Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlisteners . forEach Ġ{ Ġit . on Selected Action Change ( selected Action ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOL UM BUS _ LA UNCH _ APP _ URI Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlisteners . forEach Ġ{ Ġit . on Selected App Change ( selected App ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOL UM BUS _ LA UNCH _ APP _ SHORT CUT _ URI Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlisteners . forEach Ġ{ Ġit . on Selected App Shortcut Change ( selected App Shortcut ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOL UM BUS _ LOW _ S ENS IT IVITY _ URI Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlisteners . forEach Ġ{ Ġit . on Low Sensitivity Change ( use Low Sensitivity ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOL UM BUS _ SIL ENCE _ AL ER TS _ URI Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlisteners . forEach Ġ{ Ġit . on Alert Sil ence Enabled Change ( sil ence Alerts Enabled ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w ( TAG , Ġ" Unknown Ġsetting Ġchange : Ġ$ uri ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġcontent Observer s Ġ= ĠMON IT O RED _ UR IS . map Ġ{ ĊĠĠĠĠĠĠĠ Ġcontent Observer Factory . create ( it , Ġthis :: callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġis Col umb us Enabled ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġtrue Ġ// Settings . Secure . getInt ( content Resolver , ĠKEY _ COL UM BUS _ ENABLED , Ġ 0 ) Ġ!= Ġ 0 ĊĊĠĠĠ Ġval Ġselected Action ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ"" Ġ// Settings . Secure . getString ( content Resolver , ĠKEY _ ACTION ) ĊĊĠĠĠ Ġval Ġselected App ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ"" Ġ// Settings . Secure . getString ( content Resolver , ĠKEY _ LA UNCH _ APP ) ĊĊĠĠĠ Ġval Ġselected App Shortcut ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ"" Ġ// Settings . Secure . getString ( content Resolver , ĠKEY _ LA UNCH _ APP _ SHORT CUT ) ĊĊĠĠĠ Ġval Ġsil ence Alerts Enabled ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfalse Ġ// Settings . Secure . getInt ( content Resolver , ĠKEY _ SIL ENCE _ AL ER TS , Ġ 1 ) Ġ!= Ġ 0 ĊĊĠĠĠ Ġval Ġuse Ap Sensor ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfalse Ġ// Settings . Secure . getInt ( content Resolver , ĠKEY _ AP _ SENSOR , Ġ 0 ) Ġ!= Ġ 0 ĊĊĠĠĠ Ġval Ġuse Low Sensitivity ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġfalse Ġ// Settings . Secure . getInt ( content Resolver , ĠKEY _ LOW _ S ENS IT IVITY , Ġ 0 ) Ġ!= Ġ 0 ĊĊĠĠĠ Ġfun Ġregister Col umb us Settings ChangeListener ( listener : ĠCol umb us Settings ChangeListener ){ ĊĠĠĠĠĠĠĠ Ġlisteners . add ( listener ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! registered Ġ&& Ġlisteners . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistered Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Observer s . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . activate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġunregister Col umb us Settings ChangeListener ( listener : ĠCol umb us Settings ChangeListener ){ ĊĠĠĠĠĠĠĠ Ġlisteners . remove ( listener ) ĊĠĠĠĠĠĠĠ Ġif ( registered Ġ&& Ġlisteners . isEmpty ()){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġregistered Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Observer s . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . deactivate () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }