Loading packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +20 −5 Original line number Original line Diff line number Diff line Loading @@ -57,7 +57,6 @@ import android.hardware.face.FaceManager; import android.hardware.fingerprint.FingerprintManager; import android.hardware.fingerprint.FingerprintManager; import android.hardware.fingerprint.FingerprintManager.AuthenticationCallback; import android.hardware.fingerprint.FingerprintManager.AuthenticationCallback; import android.hardware.fingerprint.FingerprintManager.AuthenticationResult; import android.hardware.fingerprint.FingerprintManager.AuthenticationResult; import android.media.AudioManager; import android.os.CancellationSignal; import android.os.CancellationSignal; import android.os.Handler; import android.os.Handler; import android.os.IRemoteCallback; import android.os.IRemoteCallback; Loading @@ -82,6 +81,8 @@ import android.util.Log; import android.util.SparseArray; import android.util.SparseArray; import android.util.SparseBooleanArray; import android.util.SparseBooleanArray; import androidx.lifecycle.Observer; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternUtils; import com.android.settingslib.WirelessUtils; import com.android.settingslib.WirelessUtils; Loading @@ -97,6 +98,7 @@ import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.TaskStackChangeListener; import com.android.systemui.shared.system.TaskStackChangeListener; import com.android.systemui.statusbar.phone.KeyguardBypassController; import com.android.systemui.statusbar.phone.KeyguardBypassController; import com.android.systemui.util.Assert; import com.android.systemui.util.Assert; import com.android.systemui.util.RingerModeTracker; import com.google.android.collect.Lists; import com.google.android.collect.Lists; Loading Loading @@ -258,6 +260,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab private TrustManager mTrustManager; private TrustManager mTrustManager; private UserManager mUserManager; private UserManager mUserManager; private KeyguardBypassController mKeyguardBypassController; private KeyguardBypassController mKeyguardBypassController; private RingerModeTracker mRingerModeTracker; private int mFingerprintRunningState = BIOMETRIC_STATE_STOPPED; private int mFingerprintRunningState = BIOMETRIC_STATE_STOPPED; private int mFaceRunningState = BIOMETRIC_STATE_STOPPED; private int mFaceRunningState = BIOMETRIC_STATE_STOPPED; private LockPatternUtils mLockPatternUtils; private LockPatternUtils mLockPatternUtils; Loading Loading @@ -295,6 +298,13 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab private final Handler mHandler; private final Handler mHandler; private final Observer<Integer> mRingerModeObserver = new Observer<Integer>() { @Override public void onChanged(Integer ringer) { mHandler.obtainMessage(MSG_RINGER_MODE_CHANGED, ringer, 0).sendToTarget(); } }; private SparseBooleanArray mFaceSettingEnabledForUser = new SparseBooleanArray(); private SparseBooleanArray mFaceSettingEnabledForUser = new SparseBooleanArray(); private BiometricManager mBiometricManager; private BiometricManager mBiometricManager; private IBiometricEnabledOnKeyguardCallback mBiometricEnabledCallback = private IBiometricEnabledOnKeyguardCallback mBiometricEnabledCallback = Loading Loading @@ -1145,9 +1155,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab } } mHandler.obtainMessage(MSG_SIM_STATE_CHANGE, args.subId, args.slotId, args.simState) mHandler.obtainMessage(MSG_SIM_STATE_CHANGE, args.subId, args.slotId, args.simState) .sendToTarget(); .sendToTarget(); } else if (AudioManager.RINGER_MODE_CHANGED_ACTION.equals(action)) { mHandler.sendMessage(mHandler.obtainMessage(MSG_RINGER_MODE_CHANGED, intent.getIntExtra(AudioManager.EXTRA_RINGER_MODE, -1), 0)); } else if (TelephonyManager.ACTION_PHONE_STATE_CHANGED.equals(action)) { } else if (TelephonyManager.ACTION_PHONE_STATE_CHANGED.equals(action)) { String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); mHandler.sendMessage(mHandler.obtainMessage(MSG_PHONE_STATE_CHANGED, state)); mHandler.sendMessage(mHandler.obtainMessage(MSG_PHONE_STATE_CHANGED, state)); Loading Loading @@ -1501,6 +1508,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab mUserTrustIsUsuallyManaged.delete(userId); mUserTrustIsUsuallyManaged.delete(userId); } } private void registerRingerTracker() { mRingerModeTracker.getRingerMode().observeForever(mRingerModeObserver); } @VisibleForTesting @VisibleForTesting @Inject @Inject protected KeyguardUpdateMonitor( protected KeyguardUpdateMonitor( Loading @@ -1508,6 +1519,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab @Main Looper mainLooper, @Main Looper mainLooper, BroadcastDispatcher broadcastDispatcher, BroadcastDispatcher broadcastDispatcher, DumpManager dumpManager, DumpManager dumpManager, RingerModeTracker ringerModeTracker, @Background Executor backgroundExecutor) { @Background Executor backgroundExecutor) { mContext = context; mContext = context; mSubscriptionManager = SubscriptionManager.from(context); mSubscriptionManager = SubscriptionManager.from(context); Loading @@ -1515,6 +1527,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab mStrongAuthTracker = new StrongAuthTracker(context, this::notifyStrongAuthStateChanged); mStrongAuthTracker = new StrongAuthTracker(context, this::notifyStrongAuthStateChanged); mBackgroundExecutor = backgroundExecutor; mBackgroundExecutor = backgroundExecutor; mBroadcastDispatcher = broadcastDispatcher; mBroadcastDispatcher = broadcastDispatcher; mRingerModeTracker = ringerModeTracker; dumpManager.registerDumpable(getClass().getName(), this); dumpManager.registerDumpable(getClass().getName(), this); mHandler = new Handler(mainLooper) { mHandler = new Handler(mainLooper) { Loading Loading @@ -1648,10 +1661,11 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab filter.addAction(Intent.ACTION_SERVICE_STATE); filter.addAction(Intent.ACTION_SERVICE_STATE); filter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED); filter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED); filter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED); filter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED); filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION); filter.addAction(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED); filter.addAction(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED); mBroadcastDispatcher.registerReceiverWithHandler(mBroadcastReceiver, filter, mHandler); mBroadcastDispatcher.registerReceiverWithHandler(mBroadcastReceiver, filter, mHandler); mHandler.post(this::registerRingerTracker); final IntentFilter allUserFilter = new IntentFilter(); final IntentFilter allUserFilter = new IntentFilter(); allUserFilter.addAction(Intent.ACTION_USER_INFO_CHANGED); allUserFilter.addAction(Intent.ACTION_USER_INFO_CHANGED); allUserFilter.addAction(AlarmManager.ACTION_NEXT_ALARM_CLOCK_CHANGED); allUserFilter.addAction(AlarmManager.ACTION_NEXT_ALARM_CLOCK_CHANGED); Loading Loading @@ -2802,6 +2816,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab mBroadcastDispatcher.unregisterReceiver(mBroadcastReceiver); mBroadcastDispatcher.unregisterReceiver(mBroadcastReceiver); mBroadcastDispatcher.unregisterReceiver(mBroadcastAllReceiver); mBroadcastDispatcher.unregisterReceiver(mBroadcastAllReceiver); mRingerModeTracker.getRingerMode().removeObserver(mRingerModeObserver); mHandler.removeCallbacksAndMessages(null); mHandler.removeCallbacksAndMessages(null); } } Loading packages/SystemUI/src/com/android/systemui/dagger/DependencyBinder.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -74,6 +74,8 @@ import com.android.systemui.statusbar.policy.ZenModeController; import com.android.systemui.statusbar.policy.ZenModeControllerImpl; import com.android.systemui.statusbar.policy.ZenModeControllerImpl; import com.android.systemui.tuner.TunerService; import com.android.systemui.tuner.TunerService; import com.android.systemui.tuner.TunerServiceImpl; import com.android.systemui.tuner.TunerServiceImpl; import com.android.systemui.util.RingerModeTracker; import com.android.systemui.util.RingerModeTrackerImpl; import com.android.systemui.volume.VolumeComponent; import com.android.systemui.volume.VolumeComponent; import com.android.systemui.volume.VolumeDialogComponent; import com.android.systemui.volume.VolumeDialogComponent; import com.android.systemui.volume.VolumeDialogControllerImpl; import com.android.systemui.volume.VolumeDialogControllerImpl; Loading Loading @@ -264,4 +266,10 @@ public abstract class DependencyBinder { @Binds @Binds public abstract VolumeComponent provideVolumeComponent( public abstract VolumeComponent provideVolumeComponent( VolumeDialogComponent volumeDialogComponent); VolumeDialogComponent volumeDialogComponent); /** */ @Binds public abstract RingerModeTracker provideRingerModeTracker( RingerModeTrackerImpl ringerModeTrackerImpl); } } packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java +30 −25 Original line number Original line Diff line number Diff line Loading @@ -80,6 +80,11 @@ import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.ImageView.ScaleType; import android.widget.TextView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleRegistry; import com.android.internal.R; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.colorextraction.ColorExtractor; import com.android.internal.colorextraction.ColorExtractor; Loading Loading @@ -116,6 +121,7 @@ import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.EmergencyDialerConstants; import com.android.systemui.util.EmergencyDialerConstants; import com.android.systemui.util.RingerModeTracker; import com.android.systemui.util.leak.RotationUtils; import com.android.systemui.util.leak.RotationUtils; import com.android.systemui.volume.SystemUIInterpolators.LogAccelerateInterpolator; import com.android.systemui.volume.SystemUIInterpolators.LogAccelerateInterpolator; Loading @@ -132,7 +138,8 @@ import javax.inject.Inject; public class GlobalActionsDialog implements DialogInterface.OnDismissListener, public class GlobalActionsDialog implements DialogInterface.OnDismissListener, DialogInterface.OnShowListener, DialogInterface.OnShowListener, ConfigurationController.ConfigurationListener, ConfigurationController.ConfigurationListener, GlobalActionsPanelPlugin.Callbacks { GlobalActionsPanelPlugin.Callbacks, LifecycleOwner { public static final String SYSTEM_DIALOG_REASON_KEY = "reason"; public static final String SYSTEM_DIALOG_REASON_KEY = "reason"; public static final String SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS = "globalactions"; public static final String SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS = "globalactions"; Loading Loading @@ -181,6 +188,9 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, private final NotificationShadeDepthController mDepthController; private final NotificationShadeDepthController mDepthController; private final BlurUtils mBlurUtils; private final BlurUtils mBlurUtils; // Used for RingerModeTracker private final LifecycleRegistry mLifecycle = new LifecycleRegistry(this); private ArrayList<Action> mItems; private ArrayList<Action> mItems; private ActionsDialog mDialog; private ActionsDialog mDialog; Loading Loading @@ -211,6 +221,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, private List<ControlsServiceInfo> mControlsServiceInfos = new ArrayList<>(); private List<ControlsServiceInfo> mControlsServiceInfos = new ArrayList<>(); private ControlsController mControlsController; private ControlsController mControlsController; private SharedPreferences mControlsPreferences; private SharedPreferences mControlsPreferences; private final RingerModeTracker mRingerModeTracker; @VisibleForTesting @VisibleForTesting public enum GlobalActionsEvent implements UiEventLogger.UiEventEnum { public enum GlobalActionsEvent implements UiEventLogger.UiEventEnum { Loading Loading @@ -249,7 +260,8 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, ControlsUiController controlsUiController, IWindowManager iWindowManager, ControlsUiController controlsUiController, IWindowManager iWindowManager, @Background Executor backgroundExecutor, @Background Executor backgroundExecutor, ControlsListingController controlsListingController, ControlsListingController controlsListingController, ControlsController controlsController, UiEventLogger uiEventLogger) { ControlsController controlsController, UiEventLogger uiEventLogger, RingerModeTracker ringerModeTracker) { mContext = new ContextThemeWrapper(context, com.android.systemui.R.style.qs_theme); mContext = new ContextThemeWrapper(context, com.android.systemui.R.style.qs_theme); mWindowManagerFuncs = windowManagerFuncs; mWindowManagerFuncs = windowManagerFuncs; mAudioManager = audioManager; mAudioManager = audioManager; Loading @@ -276,6 +288,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, mBackgroundExecutor = backgroundExecutor; mBackgroundExecutor = backgroundExecutor; mControlsListingController = controlsListingController; mControlsListingController = controlsListingController; mBlurUtils = blurUtils; mBlurUtils = blurUtils; mRingerModeTracker = ringerModeTracker; mControlsController = controlsController; mControlsController = controlsController; // receive broadcasts // receive broadcasts Loading @@ -296,6 +309,11 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, mShowSilentToggle = SHOW_SILENT_TOGGLE && !resources.getBoolean( mShowSilentToggle = SHOW_SILENT_TOGGLE && !resources.getBoolean( R.bool.config_useFixedVolume); R.bool.config_useFixedVolume); if (mShowSilentToggle) { mRingerModeTracker.getRingerMode().observe(this, ringer -> mHandler.sendEmptyMessage(MESSAGE_REFRESH) ); } mEmergencyAffordanceManager = new EmergencyAffordanceManager(context); mEmergencyAffordanceManager = new EmergencyAffordanceManager(context); mScreenshotHelper = new ScreenshotHelper(context); mScreenshotHelper = new ScreenshotHelper(context); Loading Loading @@ -1003,16 +1021,13 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, refreshSilentMode(); refreshSilentMode(); mAirplaneModeOn.updateState(mAirplaneState); mAirplaneModeOn.updateState(mAirplaneState); mAdapter.notifyDataSetChanged(); mAdapter.notifyDataSetChanged(); if (mShowSilentToggle) { mLifecycle.setCurrentState(Lifecycle.State.RESUMED); IntentFilter filter = new IntentFilter(AudioManager.RINGER_MODE_CHANGED_ACTION); mBroadcastDispatcher.registerReceiver(mRingerModeReceiver, filter); } } } private void refreshSilentMode() { private void refreshSilentMode() { if (!mHasVibrator) { if (!mHasVibrator) { final boolean silentModeOn = Integer value = mRingerModeTracker.getRingerMode().getValue(); mAudioManager.getRingerMode() != AudioManager.RINGER_MODE_NORMAL; final boolean silentModeOn = value != null && value != AudioManager.RINGER_MODE_NORMAL; ((ToggleAction) mSilentModeAction).updateState( ((ToggleAction) mSilentModeAction).updateState( silentModeOn ? ToggleState.On : ToggleState.Off); silentModeOn ? ToggleState.On : ToggleState.Off); } } Loading @@ -1026,14 +1041,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, mDialog = null; mDialog = null; } } mWindowManagerFuncs.onGlobalActionsHidden(); mWindowManagerFuncs.onGlobalActionsHidden(); if (mShowSilentToggle) { mLifecycle.setCurrentState(Lifecycle.State.DESTROYED); try { mBroadcastDispatcher.unregisterReceiver(mRingerModeReceiver); } catch (IllegalArgumentException ie) { // ignore this Log.w(TAG, ie); } } } } /** /** Loading Loading @@ -1580,15 +1588,6 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } } }; }; private BroadcastReceiver mRingerModeReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(AudioManager.RINGER_MODE_CHANGED_ACTION)) { mHandler.sendEmptyMessage(MESSAGE_REFRESH); } } }; private ContentObserver mAirplaneModeObserver = new ContentObserver(new Handler()) { private ContentObserver mAirplaneModeObserver = new ContentObserver(new Handler()) { @Override @Override public void onChange(boolean selfChange) { public void onChange(boolean selfChange) { Loading Loading @@ -1654,6 +1653,12 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } } } } @NonNull @Override public Lifecycle getLifecycle() { return mLifecycle; } private static final class ActionsDialog extends Dialog implements DialogInterface, private static final class ActionsDialog extends Dialog implements DialogInterface, ColorExtractor.OnColorsChangedListener { ColorExtractor.OnColorsChangedListener { Loading packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java +21 −17 Original line number Original line Diff line number Diff line Loading @@ -22,10 +22,8 @@ import static com.android.systemui.util.Utils.useQsMediaPlayer; import android.annotation.ColorInt; import android.annotation.ColorInt; import android.app.ActivityManager; import android.app.ActivityManager; import android.app.AlarmManager; import android.app.AlarmManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Context; import android.content.Intent; import android.content.Intent; import android.content.IntentFilter; import android.content.res.ColorStateList; import android.content.res.ColorStateList; import android.content.res.Configuration; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.Resources; Loading @@ -49,13 +47,16 @@ import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleRegistry; import com.android.settingslib.Utils; import com.android.settingslib.Utils; import com.android.systemui.BatteryMeterView; import com.android.systemui.BatteryMeterView; import com.android.systemui.DualToneHandler; import com.android.systemui.DualToneHandler; import com.android.systemui.R; import com.android.systemui.R; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.DarkIconDispatcher; import com.android.systemui.plugins.DarkIconDispatcher; import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver; import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver; Loading @@ -70,6 +71,7 @@ import com.android.systemui.statusbar.policy.Clock; import com.android.systemui.statusbar.policy.DateView; import com.android.systemui.statusbar.policy.DateView; import com.android.systemui.statusbar.policy.NextAlarmController; import com.android.systemui.statusbar.policy.NextAlarmController; import com.android.systemui.statusbar.policy.ZenModeController; import com.android.systemui.statusbar.policy.ZenModeController; import com.android.systemui.util.RingerModeTracker; import java.util.ArrayList; import java.util.ArrayList; import java.util.List; import java.util.List; Loading @@ -86,7 +88,7 @@ import javax.inject.Named; */ */ public class QuickStatusBarHeader extends RelativeLayout implements public class QuickStatusBarHeader extends RelativeLayout implements View.OnClickListener, NextAlarmController.NextAlarmChangeCallback, View.OnClickListener, NextAlarmController.NextAlarmChangeCallback, ZenModeController.Callback { ZenModeController.Callback, LifecycleOwner { private static final String TAG = "QuickStatusBarHeader"; private static final String TAG = "QuickStatusBarHeader"; private static final boolean DEBUG = false; private static final boolean DEBUG = false; Loading Loading @@ -137,15 +139,9 @@ public class QuickStatusBarHeader extends RelativeLayout implements private DateView mDateView; private DateView mDateView; private BatteryMeterView mBatteryRemainingIcon; private BatteryMeterView mBatteryRemainingIcon; private BroadcastDispatcher mBroadcastDispatcher; // Used for RingerModeTracker private final LifecycleRegistry mLifecycle = new LifecycleRegistry(this); private final BroadcastReceiver mRingerReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { mRingerMode = intent.getIntExtra(AudioManager.EXTRA_RINGER_MODE, -1); updateStatusText(); } }; private boolean mHasTopCutout = false; private boolean mHasTopCutout = false; private int mRoundedCornerPadding = 0; private int mRoundedCornerPadding = 0; Loading @@ -154,7 +150,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements NextAlarmController nextAlarmController, ZenModeController zenModeController, NextAlarmController nextAlarmController, ZenModeController zenModeController, StatusBarIconController statusBarIconController, StatusBarIconController statusBarIconController, ActivityStarter activityStarter, ActivityStarter activityStarter, CommandQueue commandQueue, BroadcastDispatcher broadcastDispatcher) { CommandQueue commandQueue, RingerModeTracker ringerModeTracker) { super(context, attrs); super(context, attrs); mAlarmController = nextAlarmController; mAlarmController = nextAlarmController; mZenController = zenModeController; mZenController = zenModeController; Loading @@ -162,8 +158,11 @@ public class QuickStatusBarHeader extends RelativeLayout implements mActivityStarter = activityStarter; mActivityStarter = activityStarter; mDualToneHandler = new DualToneHandler( mDualToneHandler = new DualToneHandler( new ContextThemeWrapper(context, R.style.QSHeaderTheme)); new ContextThemeWrapper(context, R.style.QSHeaderTheme)); mBroadcastDispatcher = broadcastDispatcher; mCommandQueue = commandQueue; mCommandQueue = commandQueue; ringerModeTracker.getRingerModeInternal().observe(this, ringer -> { mRingerMode = ringer; updateStatusText(); }); } } @Override @Override Loading Loading @@ -484,12 +483,11 @@ public class QuickStatusBarHeader extends RelativeLayout implements if (listening) { if (listening) { mZenController.addCallback(this); mZenController.addCallback(this); mAlarmController.addCallback(this); mAlarmController.addCallback(this); mBroadcastDispatcher.registerReceiver(mRingerReceiver, mLifecycle.setCurrentState(Lifecycle.State.RESUMED); new IntentFilter(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION)); } else { } else { mZenController.removeCallback(this); mZenController.removeCallback(this); mAlarmController.removeCallback(this); mAlarmController.removeCallback(this); mBroadcastDispatcher.unregisterReceiver(mRingerReceiver); mLifecycle.setCurrentState(Lifecycle.State.DESTROYED); } } } } Loading Loading @@ -586,4 +584,10 @@ public class QuickStatusBarHeader extends RelativeLayout implements lp.rightMargin = sideMargins; lp.rightMargin = sideMargins; } } } } @NonNull @Override public Lifecycle getLifecycle() { return mLifecycle; } } } packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java +25 −18 Original line number Original line Diff line number Diff line Loading @@ -39,6 +39,8 @@ import android.telecom.TelecomManager; import android.text.format.DateFormat; import android.text.format.DateFormat; import android.util.Log; import android.util.Log; import androidx.lifecycle.Observer; import com.android.systemui.R; import com.android.systemui.R; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dagger.qualifiers.DisplayId; import com.android.systemui.dagger.qualifiers.DisplayId; Loading @@ -64,6 +66,7 @@ import com.android.systemui.statusbar.policy.RotationLockController.RotationLock import com.android.systemui.statusbar.policy.SensorPrivacyController; import com.android.systemui.statusbar.policy.SensorPrivacyController; import com.android.systemui.statusbar.policy.UserInfoController; import com.android.systemui.statusbar.policy.UserInfoController; import com.android.systemui.statusbar.policy.ZenModeController; import com.android.systemui.statusbar.policy.ZenModeController; import com.android.systemui.util.RingerModeTracker; import com.android.systemui.util.time.DateFormatUtil; import com.android.systemui.util.time.DateFormatUtil; import java.util.Locale; import java.util.Locale; Loading Loading @@ -109,7 +112,6 @@ public class PhoneStatusBarPolicy private final SharedPreferences mSharedPreferences; private final SharedPreferences mSharedPreferences; private final DateFormatUtil mDateFormatUtil; private final DateFormatUtil mDateFormatUtil; private final TelecomManager mTelecomManager; private final TelecomManager mTelecomManager; private final AudioManager mAudioManager; private final Handler mHandler = new Handler(); private final Handler mHandler = new Handler(); private final CastController mCast; private final CastController mCast; Loading @@ -132,6 +134,7 @@ public class PhoneStatusBarPolicy private final Executor mUiBgExecutor; private final Executor mUiBgExecutor; private final SensorPrivacyController mSensorPrivacyController; private final SensorPrivacyController mSensorPrivacyController; private final RecordingController mRecordingController; private final RecordingController mRecordingController; private final RingerModeTracker mRingerModeTracker; private boolean mZenVisible; private boolean mZenVisible; private boolean mVolumeVisible; private boolean mVolumeVisible; Loading @@ -154,10 +157,11 @@ public class PhoneStatusBarPolicy KeyguardStateController keyguardStateController, KeyguardStateController keyguardStateController, LocationController locationController, LocationController locationController, SensorPrivacyController sensorPrivacyController, IActivityManager iActivityManager, SensorPrivacyController sensorPrivacyController, IActivityManager iActivityManager, AlarmManager alarmManager, UserManager userManager, AudioManager audioManager, AlarmManager alarmManager, UserManager userManager, RecordingController recordingController, RecordingController recordingController, @Nullable TelecomManager telecomManager, @DisplayId int displayId, @Nullable TelecomManager telecomManager, @DisplayId int displayId, @Main SharedPreferences sharedPreferences, DateFormatUtil dateFormatUtil) { @Main SharedPreferences sharedPreferences, DateFormatUtil dateFormatUtil, RingerModeTracker ringerModeTracker) { mIconController = iconController; mIconController = iconController; mCommandQueue = commandQueue; mCommandQueue = commandQueue; mBroadcastDispatcher = broadcastDispatcher; mBroadcastDispatcher = broadcastDispatcher; Loading @@ -179,8 +183,8 @@ public class PhoneStatusBarPolicy mSensorPrivacyController = sensorPrivacyController; mSensorPrivacyController = sensorPrivacyController; mRecordingController = recordingController; mRecordingController = recordingController; mUiBgExecutor = uiBgExecutor; mUiBgExecutor = uiBgExecutor; mAudioManager = audioManager; mTelecomManager = telecomManager; mTelecomManager = telecomManager; mRingerModeTracker = ringerModeTracker; mSlotCast = resources.getString(com.android.internal.R.string.status_bar_cast); mSlotCast = resources.getString(com.android.internal.R.string.status_bar_cast); mSlotHotspot = resources.getString(com.android.internal.R.string.status_bar_hotspot); mSlotHotspot = resources.getString(com.android.internal.R.string.status_bar_hotspot); Loading Loading @@ -208,8 +212,7 @@ public class PhoneStatusBarPolicy public void init() { public void init() { // listen for broadcasts // listen for broadcasts IntentFilter filter = new IntentFilter(); IntentFilter filter = new IntentFilter(); filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION); filter.addAction(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION); filter.addAction(AudioManager.ACTION_HEADSET_PLUG); filter.addAction(AudioManager.ACTION_HEADSET_PLUG); filter.addAction(Intent.ACTION_SIM_STATE_CHANGED); filter.addAction(Intent.ACTION_SIM_STATE_CHANGED); filter.addAction(TelecomManager.ACTION_CURRENT_TTY_MODE_CHANGED); filter.addAction(TelecomManager.ACTION_CURRENT_TTY_MODE_CHANGED); Loading @@ -217,6 +220,10 @@ public class PhoneStatusBarPolicy filter.addAction(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE); filter.addAction(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE); filter.addAction(Intent.ACTION_MANAGED_PROFILE_REMOVED); filter.addAction(Intent.ACTION_MANAGED_PROFILE_REMOVED); mBroadcastDispatcher.registerReceiverWithHandler(mIntentReceiver, filter, mHandler); mBroadcastDispatcher.registerReceiverWithHandler(mIntentReceiver, filter, mHandler); Observer<Integer> observer = ringer -> mHandler.post(this::updateVolumeZen); mRingerModeTracker.getRingerMode().observeForever(observer); mRingerModeTracker.getRingerModeInternal().observeForever(observer); // listen for user / profile change. // listen for user / profile change. try { try { Loading Loading @@ -350,16 +357,20 @@ public class PhoneStatusBarPolicy } } if (!ZenModeConfig.isZenOverridingRinger(zen, mZenController.getConsolidatedPolicy())) { if (!ZenModeConfig.isZenOverridingRinger(zen, mZenController.getConsolidatedPolicy())) { if (mAudioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_VIBRATE) { final Integer ringerModeInternal = mRingerModeTracker.getRingerModeInternal().getValue(); if (ringerModeInternal != null) { if (ringerModeInternal == AudioManager.RINGER_MODE_VIBRATE) { volumeVisible = true; volumeVisible = true; volumeIconId = R.drawable.stat_sys_ringer_vibrate; volumeIconId = R.drawable.stat_sys_ringer_vibrate; volumeDescription = mResources.getString(R.string.accessibility_ringer_vibrate); volumeDescription = mResources.getString(R.string.accessibility_ringer_vibrate); } else if (mAudioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_SILENT) { } else if (ringerModeInternal == AudioManager.RINGER_MODE_SILENT) { volumeVisible = true; volumeVisible = true; volumeIconId = R.drawable.stat_sys_ringer_silent; volumeIconId = R.drawable.stat_sys_ringer_silent; volumeDescription = mResources.getString(R.string.accessibility_ringer_silent); volumeDescription = mResources.getString(R.string.accessibility_ringer_silent); } } } } } if (zenVisible) { if (zenVisible) { mIconController.setIcon(mSlotZen, zenIconId, zenDescription); mIconController.setIcon(mSlotZen, zenIconId, zenDescription); Loading Loading @@ -616,10 +627,6 @@ public class PhoneStatusBarPolicy public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); String action = intent.getAction(); switch (action) { switch (action) { case AudioManager.RINGER_MODE_CHANGED_ACTION: case AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION: updateVolumeZen(); break; case Intent.ACTION_SIM_STATE_CHANGED: case Intent.ACTION_SIM_STATE_CHANGED: // Avoid rebroadcast because SysUI is direct boot aware. // Avoid rebroadcast because SysUI is direct boot aware. if (intent.getBooleanExtra(Intent.EXTRA_REBROADCAST_ON_UNLOCK, false)) { if (intent.getBooleanExtra(Intent.EXTRA_REBROADCAST_ON_UNLOCK, false)) { Loading Loading
packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +20 −5 Original line number Original line Diff line number Diff line Loading @@ -57,7 +57,6 @@ import android.hardware.face.FaceManager; import android.hardware.fingerprint.FingerprintManager; import android.hardware.fingerprint.FingerprintManager; import android.hardware.fingerprint.FingerprintManager.AuthenticationCallback; import android.hardware.fingerprint.FingerprintManager.AuthenticationCallback; import android.hardware.fingerprint.FingerprintManager.AuthenticationResult; import android.hardware.fingerprint.FingerprintManager.AuthenticationResult; import android.media.AudioManager; import android.os.CancellationSignal; import android.os.CancellationSignal; import android.os.Handler; import android.os.Handler; import android.os.IRemoteCallback; import android.os.IRemoteCallback; Loading @@ -82,6 +81,8 @@ import android.util.Log; import android.util.SparseArray; import android.util.SparseArray; import android.util.SparseBooleanArray; import android.util.SparseBooleanArray; import androidx.lifecycle.Observer; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.widget.LockPatternUtils; import com.android.internal.widget.LockPatternUtils; import com.android.settingslib.WirelessUtils; import com.android.settingslib.WirelessUtils; Loading @@ -97,6 +98,7 @@ import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.TaskStackChangeListener; import com.android.systemui.shared.system.TaskStackChangeListener; import com.android.systemui.statusbar.phone.KeyguardBypassController; import com.android.systemui.statusbar.phone.KeyguardBypassController; import com.android.systemui.util.Assert; import com.android.systemui.util.Assert; import com.android.systemui.util.RingerModeTracker; import com.google.android.collect.Lists; import com.google.android.collect.Lists; Loading Loading @@ -258,6 +260,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab private TrustManager mTrustManager; private TrustManager mTrustManager; private UserManager mUserManager; private UserManager mUserManager; private KeyguardBypassController mKeyguardBypassController; private KeyguardBypassController mKeyguardBypassController; private RingerModeTracker mRingerModeTracker; private int mFingerprintRunningState = BIOMETRIC_STATE_STOPPED; private int mFingerprintRunningState = BIOMETRIC_STATE_STOPPED; private int mFaceRunningState = BIOMETRIC_STATE_STOPPED; private int mFaceRunningState = BIOMETRIC_STATE_STOPPED; private LockPatternUtils mLockPatternUtils; private LockPatternUtils mLockPatternUtils; Loading Loading @@ -295,6 +298,13 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab private final Handler mHandler; private final Handler mHandler; private final Observer<Integer> mRingerModeObserver = new Observer<Integer>() { @Override public void onChanged(Integer ringer) { mHandler.obtainMessage(MSG_RINGER_MODE_CHANGED, ringer, 0).sendToTarget(); } }; private SparseBooleanArray mFaceSettingEnabledForUser = new SparseBooleanArray(); private SparseBooleanArray mFaceSettingEnabledForUser = new SparseBooleanArray(); private BiometricManager mBiometricManager; private BiometricManager mBiometricManager; private IBiometricEnabledOnKeyguardCallback mBiometricEnabledCallback = private IBiometricEnabledOnKeyguardCallback mBiometricEnabledCallback = Loading Loading @@ -1145,9 +1155,6 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab } } mHandler.obtainMessage(MSG_SIM_STATE_CHANGE, args.subId, args.slotId, args.simState) mHandler.obtainMessage(MSG_SIM_STATE_CHANGE, args.subId, args.slotId, args.simState) .sendToTarget(); .sendToTarget(); } else if (AudioManager.RINGER_MODE_CHANGED_ACTION.equals(action)) { mHandler.sendMessage(mHandler.obtainMessage(MSG_RINGER_MODE_CHANGED, intent.getIntExtra(AudioManager.EXTRA_RINGER_MODE, -1), 0)); } else if (TelephonyManager.ACTION_PHONE_STATE_CHANGED.equals(action)) { } else if (TelephonyManager.ACTION_PHONE_STATE_CHANGED.equals(action)) { String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); mHandler.sendMessage(mHandler.obtainMessage(MSG_PHONE_STATE_CHANGED, state)); mHandler.sendMessage(mHandler.obtainMessage(MSG_PHONE_STATE_CHANGED, state)); Loading Loading @@ -1501,6 +1508,10 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab mUserTrustIsUsuallyManaged.delete(userId); mUserTrustIsUsuallyManaged.delete(userId); } } private void registerRingerTracker() { mRingerModeTracker.getRingerMode().observeForever(mRingerModeObserver); } @VisibleForTesting @VisibleForTesting @Inject @Inject protected KeyguardUpdateMonitor( protected KeyguardUpdateMonitor( Loading @@ -1508,6 +1519,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab @Main Looper mainLooper, @Main Looper mainLooper, BroadcastDispatcher broadcastDispatcher, BroadcastDispatcher broadcastDispatcher, DumpManager dumpManager, DumpManager dumpManager, RingerModeTracker ringerModeTracker, @Background Executor backgroundExecutor) { @Background Executor backgroundExecutor) { mContext = context; mContext = context; mSubscriptionManager = SubscriptionManager.from(context); mSubscriptionManager = SubscriptionManager.from(context); Loading @@ -1515,6 +1527,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab mStrongAuthTracker = new StrongAuthTracker(context, this::notifyStrongAuthStateChanged); mStrongAuthTracker = new StrongAuthTracker(context, this::notifyStrongAuthStateChanged); mBackgroundExecutor = backgroundExecutor; mBackgroundExecutor = backgroundExecutor; mBroadcastDispatcher = broadcastDispatcher; mBroadcastDispatcher = broadcastDispatcher; mRingerModeTracker = ringerModeTracker; dumpManager.registerDumpable(getClass().getName(), this); dumpManager.registerDumpable(getClass().getName(), this); mHandler = new Handler(mainLooper) { mHandler = new Handler(mainLooper) { Loading Loading @@ -1648,10 +1661,11 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab filter.addAction(Intent.ACTION_SERVICE_STATE); filter.addAction(Intent.ACTION_SERVICE_STATE); filter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED); filter.addAction(TelephonyManager.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED); filter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED); filter.addAction(TelephonyManager.ACTION_PHONE_STATE_CHANGED); filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION); filter.addAction(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED); filter.addAction(DevicePolicyManager.ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED); mBroadcastDispatcher.registerReceiverWithHandler(mBroadcastReceiver, filter, mHandler); mBroadcastDispatcher.registerReceiverWithHandler(mBroadcastReceiver, filter, mHandler); mHandler.post(this::registerRingerTracker); final IntentFilter allUserFilter = new IntentFilter(); final IntentFilter allUserFilter = new IntentFilter(); allUserFilter.addAction(Intent.ACTION_USER_INFO_CHANGED); allUserFilter.addAction(Intent.ACTION_USER_INFO_CHANGED); allUserFilter.addAction(AlarmManager.ACTION_NEXT_ALARM_CLOCK_CHANGED); allUserFilter.addAction(AlarmManager.ACTION_NEXT_ALARM_CLOCK_CHANGED); Loading Loading @@ -2802,6 +2816,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab mBroadcastDispatcher.unregisterReceiver(mBroadcastReceiver); mBroadcastDispatcher.unregisterReceiver(mBroadcastReceiver); mBroadcastDispatcher.unregisterReceiver(mBroadcastAllReceiver); mBroadcastDispatcher.unregisterReceiver(mBroadcastAllReceiver); mRingerModeTracker.getRingerMode().removeObserver(mRingerModeObserver); mHandler.removeCallbacksAndMessages(null); mHandler.removeCallbacksAndMessages(null); } } Loading
packages/SystemUI/src/com/android/systemui/dagger/DependencyBinder.java +8 −0 Original line number Original line Diff line number Diff line Loading @@ -74,6 +74,8 @@ import com.android.systemui.statusbar.policy.ZenModeController; import com.android.systemui.statusbar.policy.ZenModeControllerImpl; import com.android.systemui.statusbar.policy.ZenModeControllerImpl; import com.android.systemui.tuner.TunerService; import com.android.systemui.tuner.TunerService; import com.android.systemui.tuner.TunerServiceImpl; import com.android.systemui.tuner.TunerServiceImpl; import com.android.systemui.util.RingerModeTracker; import com.android.systemui.util.RingerModeTrackerImpl; import com.android.systemui.volume.VolumeComponent; import com.android.systemui.volume.VolumeComponent; import com.android.systemui.volume.VolumeDialogComponent; import com.android.systemui.volume.VolumeDialogComponent; import com.android.systemui.volume.VolumeDialogControllerImpl; import com.android.systemui.volume.VolumeDialogControllerImpl; Loading Loading @@ -264,4 +266,10 @@ public abstract class DependencyBinder { @Binds @Binds public abstract VolumeComponent provideVolumeComponent( public abstract VolumeComponent provideVolumeComponent( VolumeDialogComponent volumeDialogComponent); VolumeDialogComponent volumeDialogComponent); /** */ @Binds public abstract RingerModeTracker provideRingerModeTracker( RingerModeTrackerImpl ringerModeTrackerImpl); } }
packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java +30 −25 Original line number Original line Diff line number Diff line Loading @@ -80,6 +80,11 @@ import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.ImageView.ScaleType; import android.widget.TextView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleRegistry; import com.android.internal.R; import com.android.internal.R; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.colorextraction.ColorExtractor; import com.android.internal.colorextraction.ColorExtractor; Loading Loading @@ -116,6 +121,7 @@ import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.EmergencyDialerConstants; import com.android.systemui.util.EmergencyDialerConstants; import com.android.systemui.util.RingerModeTracker; import com.android.systemui.util.leak.RotationUtils; import com.android.systemui.util.leak.RotationUtils; import com.android.systemui.volume.SystemUIInterpolators.LogAccelerateInterpolator; import com.android.systemui.volume.SystemUIInterpolators.LogAccelerateInterpolator; Loading @@ -132,7 +138,8 @@ import javax.inject.Inject; public class GlobalActionsDialog implements DialogInterface.OnDismissListener, public class GlobalActionsDialog implements DialogInterface.OnDismissListener, DialogInterface.OnShowListener, DialogInterface.OnShowListener, ConfigurationController.ConfigurationListener, ConfigurationController.ConfigurationListener, GlobalActionsPanelPlugin.Callbacks { GlobalActionsPanelPlugin.Callbacks, LifecycleOwner { public static final String SYSTEM_DIALOG_REASON_KEY = "reason"; public static final String SYSTEM_DIALOG_REASON_KEY = "reason"; public static final String SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS = "globalactions"; public static final String SYSTEM_DIALOG_REASON_GLOBAL_ACTIONS = "globalactions"; Loading Loading @@ -181,6 +188,9 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, private final NotificationShadeDepthController mDepthController; private final NotificationShadeDepthController mDepthController; private final BlurUtils mBlurUtils; private final BlurUtils mBlurUtils; // Used for RingerModeTracker private final LifecycleRegistry mLifecycle = new LifecycleRegistry(this); private ArrayList<Action> mItems; private ArrayList<Action> mItems; private ActionsDialog mDialog; private ActionsDialog mDialog; Loading Loading @@ -211,6 +221,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, private List<ControlsServiceInfo> mControlsServiceInfos = new ArrayList<>(); private List<ControlsServiceInfo> mControlsServiceInfos = new ArrayList<>(); private ControlsController mControlsController; private ControlsController mControlsController; private SharedPreferences mControlsPreferences; private SharedPreferences mControlsPreferences; private final RingerModeTracker mRingerModeTracker; @VisibleForTesting @VisibleForTesting public enum GlobalActionsEvent implements UiEventLogger.UiEventEnum { public enum GlobalActionsEvent implements UiEventLogger.UiEventEnum { Loading Loading @@ -249,7 +260,8 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, ControlsUiController controlsUiController, IWindowManager iWindowManager, ControlsUiController controlsUiController, IWindowManager iWindowManager, @Background Executor backgroundExecutor, @Background Executor backgroundExecutor, ControlsListingController controlsListingController, ControlsListingController controlsListingController, ControlsController controlsController, UiEventLogger uiEventLogger) { ControlsController controlsController, UiEventLogger uiEventLogger, RingerModeTracker ringerModeTracker) { mContext = new ContextThemeWrapper(context, com.android.systemui.R.style.qs_theme); mContext = new ContextThemeWrapper(context, com.android.systemui.R.style.qs_theme); mWindowManagerFuncs = windowManagerFuncs; mWindowManagerFuncs = windowManagerFuncs; mAudioManager = audioManager; mAudioManager = audioManager; Loading @@ -276,6 +288,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, mBackgroundExecutor = backgroundExecutor; mBackgroundExecutor = backgroundExecutor; mControlsListingController = controlsListingController; mControlsListingController = controlsListingController; mBlurUtils = blurUtils; mBlurUtils = blurUtils; mRingerModeTracker = ringerModeTracker; mControlsController = controlsController; mControlsController = controlsController; // receive broadcasts // receive broadcasts Loading @@ -296,6 +309,11 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, mShowSilentToggle = SHOW_SILENT_TOGGLE && !resources.getBoolean( mShowSilentToggle = SHOW_SILENT_TOGGLE && !resources.getBoolean( R.bool.config_useFixedVolume); R.bool.config_useFixedVolume); if (mShowSilentToggle) { mRingerModeTracker.getRingerMode().observe(this, ringer -> mHandler.sendEmptyMessage(MESSAGE_REFRESH) ); } mEmergencyAffordanceManager = new EmergencyAffordanceManager(context); mEmergencyAffordanceManager = new EmergencyAffordanceManager(context); mScreenshotHelper = new ScreenshotHelper(context); mScreenshotHelper = new ScreenshotHelper(context); Loading Loading @@ -1003,16 +1021,13 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, refreshSilentMode(); refreshSilentMode(); mAirplaneModeOn.updateState(mAirplaneState); mAirplaneModeOn.updateState(mAirplaneState); mAdapter.notifyDataSetChanged(); mAdapter.notifyDataSetChanged(); if (mShowSilentToggle) { mLifecycle.setCurrentState(Lifecycle.State.RESUMED); IntentFilter filter = new IntentFilter(AudioManager.RINGER_MODE_CHANGED_ACTION); mBroadcastDispatcher.registerReceiver(mRingerModeReceiver, filter); } } } private void refreshSilentMode() { private void refreshSilentMode() { if (!mHasVibrator) { if (!mHasVibrator) { final boolean silentModeOn = Integer value = mRingerModeTracker.getRingerMode().getValue(); mAudioManager.getRingerMode() != AudioManager.RINGER_MODE_NORMAL; final boolean silentModeOn = value != null && value != AudioManager.RINGER_MODE_NORMAL; ((ToggleAction) mSilentModeAction).updateState( ((ToggleAction) mSilentModeAction).updateState( silentModeOn ? ToggleState.On : ToggleState.Off); silentModeOn ? ToggleState.On : ToggleState.Off); } } Loading @@ -1026,14 +1041,7 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, mDialog = null; mDialog = null; } } mWindowManagerFuncs.onGlobalActionsHidden(); mWindowManagerFuncs.onGlobalActionsHidden(); if (mShowSilentToggle) { mLifecycle.setCurrentState(Lifecycle.State.DESTROYED); try { mBroadcastDispatcher.unregisterReceiver(mRingerModeReceiver); } catch (IllegalArgumentException ie) { // ignore this Log.w(TAG, ie); } } } } /** /** Loading Loading @@ -1580,15 +1588,6 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } } }; }; private BroadcastReceiver mRingerModeReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(AudioManager.RINGER_MODE_CHANGED_ACTION)) { mHandler.sendEmptyMessage(MESSAGE_REFRESH); } } }; private ContentObserver mAirplaneModeObserver = new ContentObserver(new Handler()) { private ContentObserver mAirplaneModeObserver = new ContentObserver(new Handler()) { @Override @Override public void onChange(boolean selfChange) { public void onChange(boolean selfChange) { Loading Loading @@ -1654,6 +1653,12 @@ public class GlobalActionsDialog implements DialogInterface.OnDismissListener, } } } } @NonNull @Override public Lifecycle getLifecycle() { return mLifecycle; } private static final class ActionsDialog extends Dialog implements DialogInterface, private static final class ActionsDialog extends Dialog implements DialogInterface, ColorExtractor.OnColorsChangedListener { ColorExtractor.OnColorsChangedListener { Loading
packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java +21 −17 Original line number Original line Diff line number Diff line Loading @@ -22,10 +22,8 @@ import static com.android.systemui.util.Utils.useQsMediaPlayer; import android.annotation.ColorInt; import android.annotation.ColorInt; import android.app.ActivityManager; import android.app.ActivityManager; import android.app.AlarmManager; import android.app.AlarmManager; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Context; import android.content.Intent; import android.content.Intent; import android.content.IntentFilter; import android.content.res.ColorStateList; import android.content.res.ColorStateList; import android.content.res.Configuration; import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.Resources; Loading @@ -49,13 +47,16 @@ import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.RelativeLayout; import android.widget.TextView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.Lifecycle; import androidx.lifecycle.LifecycleOwner; import androidx.lifecycle.LifecycleRegistry; import com.android.settingslib.Utils; import com.android.settingslib.Utils; import com.android.systemui.BatteryMeterView; import com.android.systemui.BatteryMeterView; import com.android.systemui.DualToneHandler; import com.android.systemui.DualToneHandler; import com.android.systemui.R; import com.android.systemui.R; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.DarkIconDispatcher; import com.android.systemui.plugins.DarkIconDispatcher; import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver; import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver; Loading @@ -70,6 +71,7 @@ import com.android.systemui.statusbar.policy.Clock; import com.android.systemui.statusbar.policy.DateView; import com.android.systemui.statusbar.policy.DateView; import com.android.systemui.statusbar.policy.NextAlarmController; import com.android.systemui.statusbar.policy.NextAlarmController; import com.android.systemui.statusbar.policy.ZenModeController; import com.android.systemui.statusbar.policy.ZenModeController; import com.android.systemui.util.RingerModeTracker; import java.util.ArrayList; import java.util.ArrayList; import java.util.List; import java.util.List; Loading @@ -86,7 +88,7 @@ import javax.inject.Named; */ */ public class QuickStatusBarHeader extends RelativeLayout implements public class QuickStatusBarHeader extends RelativeLayout implements View.OnClickListener, NextAlarmController.NextAlarmChangeCallback, View.OnClickListener, NextAlarmController.NextAlarmChangeCallback, ZenModeController.Callback { ZenModeController.Callback, LifecycleOwner { private static final String TAG = "QuickStatusBarHeader"; private static final String TAG = "QuickStatusBarHeader"; private static final boolean DEBUG = false; private static final boolean DEBUG = false; Loading Loading @@ -137,15 +139,9 @@ public class QuickStatusBarHeader extends RelativeLayout implements private DateView mDateView; private DateView mDateView; private BatteryMeterView mBatteryRemainingIcon; private BatteryMeterView mBatteryRemainingIcon; private BroadcastDispatcher mBroadcastDispatcher; // Used for RingerModeTracker private final LifecycleRegistry mLifecycle = new LifecycleRegistry(this); private final BroadcastReceiver mRingerReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { mRingerMode = intent.getIntExtra(AudioManager.EXTRA_RINGER_MODE, -1); updateStatusText(); } }; private boolean mHasTopCutout = false; private boolean mHasTopCutout = false; private int mRoundedCornerPadding = 0; private int mRoundedCornerPadding = 0; Loading @@ -154,7 +150,7 @@ public class QuickStatusBarHeader extends RelativeLayout implements NextAlarmController nextAlarmController, ZenModeController zenModeController, NextAlarmController nextAlarmController, ZenModeController zenModeController, StatusBarIconController statusBarIconController, StatusBarIconController statusBarIconController, ActivityStarter activityStarter, ActivityStarter activityStarter, CommandQueue commandQueue, BroadcastDispatcher broadcastDispatcher) { CommandQueue commandQueue, RingerModeTracker ringerModeTracker) { super(context, attrs); super(context, attrs); mAlarmController = nextAlarmController; mAlarmController = nextAlarmController; mZenController = zenModeController; mZenController = zenModeController; Loading @@ -162,8 +158,11 @@ public class QuickStatusBarHeader extends RelativeLayout implements mActivityStarter = activityStarter; mActivityStarter = activityStarter; mDualToneHandler = new DualToneHandler( mDualToneHandler = new DualToneHandler( new ContextThemeWrapper(context, R.style.QSHeaderTheme)); new ContextThemeWrapper(context, R.style.QSHeaderTheme)); mBroadcastDispatcher = broadcastDispatcher; mCommandQueue = commandQueue; mCommandQueue = commandQueue; ringerModeTracker.getRingerModeInternal().observe(this, ringer -> { mRingerMode = ringer; updateStatusText(); }); } } @Override @Override Loading Loading @@ -484,12 +483,11 @@ public class QuickStatusBarHeader extends RelativeLayout implements if (listening) { if (listening) { mZenController.addCallback(this); mZenController.addCallback(this); mAlarmController.addCallback(this); mAlarmController.addCallback(this); mBroadcastDispatcher.registerReceiver(mRingerReceiver, mLifecycle.setCurrentState(Lifecycle.State.RESUMED); new IntentFilter(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION)); } else { } else { mZenController.removeCallback(this); mZenController.removeCallback(this); mAlarmController.removeCallback(this); mAlarmController.removeCallback(this); mBroadcastDispatcher.unregisterReceiver(mRingerReceiver); mLifecycle.setCurrentState(Lifecycle.State.DESTROYED); } } } } Loading Loading @@ -586,4 +584,10 @@ public class QuickStatusBarHeader extends RelativeLayout implements lp.rightMargin = sideMargins; lp.rightMargin = sideMargins; } } } } @NonNull @Override public Lifecycle getLifecycle() { return mLifecycle; } } }
packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarPolicy.java +25 −18 Original line number Original line Diff line number Diff line Loading @@ -39,6 +39,8 @@ import android.telecom.TelecomManager; import android.text.format.DateFormat; import android.text.format.DateFormat; import android.util.Log; import android.util.Log; import androidx.lifecycle.Observer; import com.android.systemui.R; import com.android.systemui.R; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dagger.qualifiers.DisplayId; import com.android.systemui.dagger.qualifiers.DisplayId; Loading @@ -64,6 +66,7 @@ import com.android.systemui.statusbar.policy.RotationLockController.RotationLock import com.android.systemui.statusbar.policy.SensorPrivacyController; import com.android.systemui.statusbar.policy.SensorPrivacyController; import com.android.systemui.statusbar.policy.UserInfoController; import com.android.systemui.statusbar.policy.UserInfoController; import com.android.systemui.statusbar.policy.ZenModeController; import com.android.systemui.statusbar.policy.ZenModeController; import com.android.systemui.util.RingerModeTracker; import com.android.systemui.util.time.DateFormatUtil; import com.android.systemui.util.time.DateFormatUtil; import java.util.Locale; import java.util.Locale; Loading Loading @@ -109,7 +112,6 @@ public class PhoneStatusBarPolicy private final SharedPreferences mSharedPreferences; private final SharedPreferences mSharedPreferences; private final DateFormatUtil mDateFormatUtil; private final DateFormatUtil mDateFormatUtil; private final TelecomManager mTelecomManager; private final TelecomManager mTelecomManager; private final AudioManager mAudioManager; private final Handler mHandler = new Handler(); private final Handler mHandler = new Handler(); private final CastController mCast; private final CastController mCast; Loading @@ -132,6 +134,7 @@ public class PhoneStatusBarPolicy private final Executor mUiBgExecutor; private final Executor mUiBgExecutor; private final SensorPrivacyController mSensorPrivacyController; private final SensorPrivacyController mSensorPrivacyController; private final RecordingController mRecordingController; private final RecordingController mRecordingController; private final RingerModeTracker mRingerModeTracker; private boolean mZenVisible; private boolean mZenVisible; private boolean mVolumeVisible; private boolean mVolumeVisible; Loading @@ -154,10 +157,11 @@ public class PhoneStatusBarPolicy KeyguardStateController keyguardStateController, KeyguardStateController keyguardStateController, LocationController locationController, LocationController locationController, SensorPrivacyController sensorPrivacyController, IActivityManager iActivityManager, SensorPrivacyController sensorPrivacyController, IActivityManager iActivityManager, AlarmManager alarmManager, UserManager userManager, AudioManager audioManager, AlarmManager alarmManager, UserManager userManager, RecordingController recordingController, RecordingController recordingController, @Nullable TelecomManager telecomManager, @DisplayId int displayId, @Nullable TelecomManager telecomManager, @DisplayId int displayId, @Main SharedPreferences sharedPreferences, DateFormatUtil dateFormatUtil) { @Main SharedPreferences sharedPreferences, DateFormatUtil dateFormatUtil, RingerModeTracker ringerModeTracker) { mIconController = iconController; mIconController = iconController; mCommandQueue = commandQueue; mCommandQueue = commandQueue; mBroadcastDispatcher = broadcastDispatcher; mBroadcastDispatcher = broadcastDispatcher; Loading @@ -179,8 +183,8 @@ public class PhoneStatusBarPolicy mSensorPrivacyController = sensorPrivacyController; mSensorPrivacyController = sensorPrivacyController; mRecordingController = recordingController; mRecordingController = recordingController; mUiBgExecutor = uiBgExecutor; mUiBgExecutor = uiBgExecutor; mAudioManager = audioManager; mTelecomManager = telecomManager; mTelecomManager = telecomManager; mRingerModeTracker = ringerModeTracker; mSlotCast = resources.getString(com.android.internal.R.string.status_bar_cast); mSlotCast = resources.getString(com.android.internal.R.string.status_bar_cast); mSlotHotspot = resources.getString(com.android.internal.R.string.status_bar_hotspot); mSlotHotspot = resources.getString(com.android.internal.R.string.status_bar_hotspot); Loading Loading @@ -208,8 +212,7 @@ public class PhoneStatusBarPolicy public void init() { public void init() { // listen for broadcasts // listen for broadcasts IntentFilter filter = new IntentFilter(); IntentFilter filter = new IntentFilter(); filter.addAction(AudioManager.RINGER_MODE_CHANGED_ACTION); filter.addAction(AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION); filter.addAction(AudioManager.ACTION_HEADSET_PLUG); filter.addAction(AudioManager.ACTION_HEADSET_PLUG); filter.addAction(Intent.ACTION_SIM_STATE_CHANGED); filter.addAction(Intent.ACTION_SIM_STATE_CHANGED); filter.addAction(TelecomManager.ACTION_CURRENT_TTY_MODE_CHANGED); filter.addAction(TelecomManager.ACTION_CURRENT_TTY_MODE_CHANGED); Loading @@ -217,6 +220,10 @@ public class PhoneStatusBarPolicy filter.addAction(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE); filter.addAction(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE); filter.addAction(Intent.ACTION_MANAGED_PROFILE_REMOVED); filter.addAction(Intent.ACTION_MANAGED_PROFILE_REMOVED); mBroadcastDispatcher.registerReceiverWithHandler(mIntentReceiver, filter, mHandler); mBroadcastDispatcher.registerReceiverWithHandler(mIntentReceiver, filter, mHandler); Observer<Integer> observer = ringer -> mHandler.post(this::updateVolumeZen); mRingerModeTracker.getRingerMode().observeForever(observer); mRingerModeTracker.getRingerModeInternal().observeForever(observer); // listen for user / profile change. // listen for user / profile change. try { try { Loading Loading @@ -350,16 +357,20 @@ public class PhoneStatusBarPolicy } } if (!ZenModeConfig.isZenOverridingRinger(zen, mZenController.getConsolidatedPolicy())) { if (!ZenModeConfig.isZenOverridingRinger(zen, mZenController.getConsolidatedPolicy())) { if (mAudioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_VIBRATE) { final Integer ringerModeInternal = mRingerModeTracker.getRingerModeInternal().getValue(); if (ringerModeInternal != null) { if (ringerModeInternal == AudioManager.RINGER_MODE_VIBRATE) { volumeVisible = true; volumeVisible = true; volumeIconId = R.drawable.stat_sys_ringer_vibrate; volumeIconId = R.drawable.stat_sys_ringer_vibrate; volumeDescription = mResources.getString(R.string.accessibility_ringer_vibrate); volumeDescription = mResources.getString(R.string.accessibility_ringer_vibrate); } else if (mAudioManager.getRingerModeInternal() == AudioManager.RINGER_MODE_SILENT) { } else if (ringerModeInternal == AudioManager.RINGER_MODE_SILENT) { volumeVisible = true; volumeVisible = true; volumeIconId = R.drawable.stat_sys_ringer_silent; volumeIconId = R.drawable.stat_sys_ringer_silent; volumeDescription = mResources.getString(R.string.accessibility_ringer_silent); volumeDescription = mResources.getString(R.string.accessibility_ringer_silent); } } } } } if (zenVisible) { if (zenVisible) { mIconController.setIcon(mSlotZen, zenIconId, zenDescription); mIconController.setIcon(mSlotZen, zenIconId, zenDescription); Loading Loading @@ -616,10 +627,6 @@ public class PhoneStatusBarPolicy public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); String action = intent.getAction(); switch (action) { switch (action) { case AudioManager.RINGER_MODE_CHANGED_ACTION: case AudioManager.INTERNAL_RINGER_MODE_CHANGED_ACTION: updateVolumeZen(); break; case Intent.ACTION_SIM_STATE_CHANGED: case Intent.ACTION_SIM_STATE_CHANGED: // Avoid rebroadcast because SysUI is direct boot aware. // Avoid rebroadcast because SysUI is direct boot aware. if (intent.getBooleanExtra(Intent.EXTRA_REBROADCAST_ON_UNLOCK, false)) { if (intent.getBooleanExtra(Intent.EXTRA_REBROADCAST_ON_UNLOCK, false)) { Loading