Handle adjust volume user restriction

- Finish all do not disturb pages immediately
 - Disable relevant items in Sounds & notification

Bug: 21642285
Change-Id: I8de9bd10b8cea8adaa306b1ae388ab7d1ccc4e7e
This commit is contained in:
Jason Monk
2015-06-30 12:18:26 -04:00
parent d9bd96b309
commit 72965ad53b
3 changed files with 34 additions and 2 deletions

View File

@@ -38,6 +38,7 @@ import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.os.Message; import android.os.Message;
import android.os.UserHandle; import android.os.UserHandle;
import android.os.UserManager;
import android.os.Vibrator; import android.os.Vibrator;
import android.preference.Preference; import android.preference.Preference;
import android.preference.Preference.OnPreferenceChangeListener; import android.preference.Preference.OnPreferenceChangeListener;
@@ -81,6 +82,15 @@ public class NotificationSettings extends SettingsPreferenceFragment implements
private static final String KEY_LOCK_SCREEN_NOTIFICATIONS = "lock_screen_notifications"; private static final String KEY_LOCK_SCREEN_NOTIFICATIONS = "lock_screen_notifications";
private static final String KEY_NOTIFICATION_ACCESS = "manage_notification_access"; private static final String KEY_NOTIFICATION_ACCESS = "manage_notification_access";
private static final String KEY_ZEN_ACCESS = "manage_zen_access"; private static final String KEY_ZEN_ACCESS = "manage_zen_access";
private static final String KEY_ZEN_MODE = "zen_mode";
private static final String[] RESTRICTED_KEYS = {
KEY_MEDIA_VOLUME,
KEY_ALARM_VOLUME,
KEY_RING_VOLUME,
KEY_ZEN_ACCESS,
KEY_ZEN_MODE,
};
private static final int SAMPLE_CUTOFF = 2000; // manually cap sample playback at 2 seconds private static final int SAMPLE_CUTOFF = 2000; // manually cap sample playback at 2 seconds
@@ -109,6 +119,8 @@ public class NotificationSettings extends SettingsPreferenceFragment implements
private ComponentName mSuppressor; private ComponentName mSuppressor;
private int mRingerMode = -1; private int mRingerMode = -1;
private UserManager mUserManager;
@Override @Override
protected int getMetricsCategory() { protected int getMetricsCategory() {
return MetricsLogger.NOTIFICATION; return MetricsLogger.NOTIFICATION;
@@ -119,6 +131,7 @@ public class NotificationSettings extends SettingsPreferenceFragment implements
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
mContext = getActivity(); mContext = getActivity();
mPM = mContext.getPackageManager(); mPM = mContext.getPackageManager();
mUserManager = UserManager.get(getContext());
mVoiceCapable = Utils.isVoiceCapable(mContext); mVoiceCapable = Utils.isVoiceCapable(mContext);
mSecure = new LockPatternUtils(getActivity()).isSecure(UserHandle.myUserId()); mSecure = new LockPatternUtils(getActivity()).isSecure(UserHandle.myUserId());
@@ -175,6 +188,13 @@ public class NotificationSettings extends SettingsPreferenceFragment implements
for (VolumeSeekBarPreference volumePref : mVolumePrefs) { for (VolumeSeekBarPreference volumePref : mVolumePrefs) {
volumePref.onActivityResume(); volumePref.onActivityResume();
} }
boolean isRestricted = mUserManager.hasUserRestriction(UserManager.DISALLOW_ADJUST_VOLUME);
for (String key : RESTRICTED_KEYS) {
Preference pref = findPreference(key);
if (pref != null) {
pref.setEnabled(!isRestricted);
}
}
} }
@Override @Override

View File

@@ -139,6 +139,10 @@ public class VolumeSeekBarPreference extends SeekBarPreference
updateIconView(); updateIconView();
mCallback.onStreamValueChanged(mStream, mSeekBar.getProgress()); mCallback.onStreamValueChanged(mStream, mSeekBar.getProgress());
updateSuppressionText(); updateSuppressionText();
if (!isEnabled()) {
mSeekBar.setEnabled(false);
mVolumizer.stop();
}
} }
// during initialization, this preference is the SeekBar listener // during initialization, this preference is the SeekBar listener

View File

@@ -22,16 +22,17 @@ import android.database.ContentObserver;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.UserManager;
import android.provider.Settings; import android.provider.Settings;
import android.provider.Settings.Global; import android.provider.Settings.Global;
import android.service.notification.ZenModeConfig; import android.service.notification.ZenModeConfig;
import android.util.Log; import android.util.Log;
import com.android.settings.SettingsPreferenceFragment; import com.android.settings.RestrictedSettingsFragment;
import java.util.Objects; import java.util.Objects;
abstract public class ZenModeSettingsBase extends SettingsPreferenceFragment { abstract public class ZenModeSettingsBase extends RestrictedSettingsFragment {
protected static final String TAG = "ZenModeSettings"; protected static final String TAG = "ZenModeSettings";
protected static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); protected static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
@@ -45,6 +46,10 @@ abstract public class ZenModeSettingsBase extends SettingsPreferenceFragment {
abstract protected void onZenModeChanged(); abstract protected void onZenModeChanged();
abstract protected void onZenModeConfigChanged(); abstract protected void onZenModeConfigChanged();
public ZenModeSettingsBase() {
super(UserManager.DISALLOW_ADJUST_VOLUME);
}
@Override @Override
public void onCreate(Bundle icicle) { public void onCreate(Bundle icicle) {
super.onCreate(icicle); super.onCreate(icicle);
@@ -60,6 +65,9 @@ abstract public class ZenModeSettingsBase extends SettingsPreferenceFragment {
updateZenMode(true /*fireChanged*/); updateZenMode(true /*fireChanged*/);
updateZenModeConfig(true /*fireChanged*/); updateZenModeConfig(true /*fireChanged*/);
mSettingsObserver.register(); mSettingsObserver.register();
if (isUiRestricted()) {
finish();
}
} }
@Override @Override