1616
1717package com .android .systemui .statusbar .phone ;
1818
19+ import android .app .ActivityManager ;
1920import android .bluetooth .BluetoothAdapter ;
2021import android .bluetooth .BluetoothAdapter .BluetoothStateChangeCallback ;
2122import android .content .BroadcastReceiver ;
4243import com .android .systemui .R ;
4344import com .android .systemui .statusbar .policy .BatteryController .BatteryStateChangeCallback ;
4445import com .android .systemui .statusbar .policy .BrightnessController .BrightnessStateChangeCallback ;
46+ import com .android .systemui .statusbar .policy .CurrentUserTracker ;
4547import com .android .systemui .statusbar .policy .LocationController .LocationGpsStateChangeCallback ;
4648import com .android .systemui .statusbar .policy .NetworkController .NetworkSignalChangedCallback ;
4749
@@ -98,16 +100,6 @@ public void onReceive(Context context, Intent intent) {
98100 }
99101 };
100102
101- /** Broadcast receiver to act on user switches to update visuals of per-user state */
102- private BroadcastReceiver mUserSwitchedReceiver = new BroadcastReceiver () {
103- @ Override
104- public void onReceive (Context context , Intent intent ) {
105- if (Intent .ACTION_USER_SWITCHED .equals (intent .getAction ())) {
106- onUserSwitched (intent );
107- }
108- }
109- };
110-
111103 /** ContentObserver to determine the next alarm */
112104 private class NextAlarmObserver extends ContentObserver {
113105 public NextAlarmObserver (Handler handler ) {
@@ -141,10 +133,36 @@ public void startObserving() {
141133 Settings .Secure .getUriFor (Settings .Secure .BUGREPORT_IN_POWER_MENU ), false , this );
142134 }
143135 }
144- private Context mContext ;
145- private Handler mHandler ;
146- private NextAlarmObserver mNextAlarmObserver ;
147- private BugreportObserver mBugreportObserver ;
136+
137+ /** ContentObserver to watch brightness **/
138+ private class BrightnessObserver extends ContentObserver {
139+ public BrightnessObserver (Handler handler ) {
140+ super (handler );
141+ }
142+
143+ @ Override
144+ public void onChange (boolean selfChange ) {
145+ onBrightnessLevelChanged ();
146+ }
147+
148+ public void startObserving () {
149+ final ContentResolver cr = mContext .getContentResolver ();
150+ cr .unregisterContentObserver (this );
151+ cr .registerContentObserver (
152+ Settings .System .getUriFor (Settings .System .SCREEN_BRIGHTNESS_MODE ),
153+ false , this , mUserTracker .getCurrentUserId ());
154+ cr .registerContentObserver (
155+ Settings .System .getUriFor (Settings .System .SCREEN_BRIGHTNESS ),
156+ false , this , mUserTracker .getCurrentUserId ());
157+ }
158+ }
159+
160+ private final Context mContext ;
161+ private final Handler mHandler ;
162+ private final CurrentUserTracker mUserTracker ;
163+ private final NextAlarmObserver mNextAlarmObserver ;
164+ private final BugreportObserver mBugreportObserver ;
165+ private final BrightnessObserver mBrightnessObserver ;
148166
149167 private QuickSettingsTileView mUserTile ;
150168 private RefreshCallback mUserCallback ;
@@ -209,17 +227,24 @@ public void startObserving() {
209227 public QuickSettingsModel (Context context ) {
210228 mContext = context ;
211229 mHandler = new Handler ();
230+ mUserTracker = new CurrentUserTracker (mContext ) {
231+ @ Override
232+ public void onReceive (Context context , Intent intent ) {
233+ super .onReceive (context , intent );
234+ onUserSwitched ();
235+ }
236+ };
237+
212238 mNextAlarmObserver = new NextAlarmObserver (mHandler );
213239 mNextAlarmObserver .startObserving ();
214240 mBugreportObserver = new BugreportObserver (mHandler );
215241 mBugreportObserver .startObserving ();
242+ mBrightnessObserver = new BrightnessObserver (mHandler );
243+ mBrightnessObserver .startObserving ();
216244
217245 IntentFilter alarmIntentFilter = new IntentFilter ();
218246 alarmIntentFilter .addAction (Intent .ACTION_ALARM_CHANGED );
219247 context .registerReceiver (mAlarmIntentReceiver , alarmIntentFilter );
220-
221- IntentFilter userSwitchedFilter = new IntentFilter (Intent .ACTION_USER_SWITCHED );
222- context .registerReceiver (mUserSwitchedReceiver , userSwitchedFilter );
223248 }
224249
225250 void updateResources () {
@@ -627,9 +652,10 @@ void addBrightnessTile(QuickSettingsTileView view, RefreshCallback cb) {
627652 @ Override
628653 public void onBrightnessLevelChanged () {
629654 Resources r = mContext .getResources ();
630- int mode = Settings .System .getInt (mContext .getContentResolver (),
655+ int mode = Settings .System .getIntForUser (mContext .getContentResolver (),
631656 Settings .System .SCREEN_BRIGHTNESS_MODE ,
632- Settings .System .SCREEN_BRIGHTNESS_MODE_MANUAL );
657+ Settings .System .SCREEN_BRIGHTNESS_MODE_MANUAL ,
658+ mUserTracker .getCurrentUserId ());
633659 mBrightnessState .autoBrightness =
634660 (mode == Settings .System .SCREEN_BRIGHTNESS_MODE_AUTOMATIC );
635661 mBrightnessState .iconId = mBrightnessState .autoBrightness
@@ -643,7 +669,8 @@ void refreshBrightnessTile() {
643669 }
644670
645671 // User switch: need to update visuals of all tiles known to have per-user state
646- void onUserSwitched (Intent intent ) {
672+ void onUserSwitched () {
673+ mBrightnessObserver .startObserving ();
647674 onRotationLockChanged ();
648675 onBrightnessLevelChanged ();
649676 onNextAlarmChanged ();
0 commit comments