Merge "Remove volume_separate_notification flag" into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
7aa8424cc0
@@ -16,29 +16,23 @@
|
||||
|
||||
package com.android.settings.notification;
|
||||
|
||||
import android.app.ActivityThread;
|
||||
import android.app.NotificationManager;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.media.AudioManager;
|
||||
import android.os.Binder;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.Message;
|
||||
import android.provider.DeviceConfig;
|
||||
import android.service.notification.NotificationListenerService;
|
||||
|
||||
import androidx.lifecycle.OnLifecycleEvent;
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
|
||||
import com.android.settings.R;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* Update notification volume icon in Settings in response to user adjusting volume.
|
||||
*/
|
||||
@@ -84,37 +78,11 @@ public class NotificationVolumePreferenceController extends
|
||||
updateEnabledState();
|
||||
}
|
||||
|
||||
/**
|
||||
* Only display the notification slider when the corresponding device config flag is set
|
||||
*/
|
||||
private void onDeviceConfigChange(DeviceConfig.Properties properties) {
|
||||
Set<String> changeSet = properties.getKeyset();
|
||||
|
||||
if (changeSet.contains(SystemUiDeviceConfigFlags.VOLUME_SEPARATE_NOTIFICATION)) {
|
||||
boolean newVal = isSeparateNotificationConfigEnabled();
|
||||
if (newVal != mSeparateNotification) {
|
||||
mSeparateNotification = newVal;
|
||||
// Update UI if config change happens when Sound Settings page is on the foreground
|
||||
if (mPreference != null) {
|
||||
int status = getAvailabilityStatus();
|
||||
mPreference.setVisible(status == AVAILABLE
|
||||
|| status == DISABLED_DEPENDENT_SETTING);
|
||||
if (status == DISABLED_DEPENDENT_SETTING) {
|
||||
mPreference.setEnabled(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
mReceiver.register(true);
|
||||
Binder.withCleanCallingIdentity(()
|
||||
-> DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
ActivityThread.currentApplication().getMainExecutor(), this::onDeviceConfigChange));
|
||||
}
|
||||
|
||||
@OnLifecycleEvent(Lifecycle.Event.ON_PAUSE)
|
||||
@@ -122,18 +90,13 @@ public class NotificationVolumePreferenceController extends
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
mReceiver.register(false);
|
||||
Binder.withCleanCallingIdentity(() ->
|
||||
DeviceConfig.removeOnPropertiesChangedListener(this::onDeviceConfigChange));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getAvailabilityStatus() {
|
||||
boolean separateNotification = isSeparateNotificationConfigEnabled();
|
||||
return mContext.getResources().getBoolean(R.bool.config_show_notification_volume)
|
||||
&& !mHelper.isSingleVolume() && separateNotification
|
||||
? (mRingerMode == AudioManager.RINGER_MODE_NORMAL
|
||||
? AVAILABLE : DISABLED_DEPENDENT_SETTING)
|
||||
: UNSUPPORTED_ON_DEVICE;
|
||||
&& !mHelper.isSingleVolume() ? (mRingerMode == AudioManager.RINGER_MODE_NORMAL
|
||||
? AVAILABLE : DISABLED_DEPENDENT_SETTING) : UNSUPPORTED_ON_DEVICE;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -16,28 +16,22 @@
|
||||
|
||||
package com.android.settings.notification;
|
||||
|
||||
import android.app.ActivityThread;
|
||||
import android.app.NotificationManager;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.media.AudioManager;
|
||||
import android.os.Binder;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.Message;
|
||||
import android.provider.DeviceConfig;
|
||||
import android.service.notification.NotificationListenerService;
|
||||
|
||||
import androidx.lifecycle.OnLifecycleEvent;
|
||||
|
||||
import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
|
||||
import com.android.settings.R;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* This slider represents both ring and notification
|
||||
*/
|
||||
@@ -61,33 +55,14 @@ public class RingVolumePreferenceController extends
|
||||
mVibrateIconId = R.drawable.ic_volume_ringer_vibrate;
|
||||
mSilentIconId = R.drawable.ic_notifications_off_24dp;
|
||||
|
||||
mSeparateNotification = isSeparateNotificationConfigEnabled();
|
||||
updateRingerMode();
|
||||
}
|
||||
|
||||
/**
|
||||
* As the responsibility of this slider changes, so should its title & icon
|
||||
*/
|
||||
private void onDeviceConfigChange(DeviceConfig.Properties properties) {
|
||||
Set<String> changeSet = properties.getKeyset();
|
||||
if (changeSet.contains(SystemUiDeviceConfigFlags.VOLUME_SEPARATE_NOTIFICATION)) {
|
||||
boolean valueUpdated = readSeparateNotificationVolumeConfig();
|
||||
if (valueUpdated) {
|
||||
updateEffectsSuppressor();
|
||||
selectPreferenceIconState();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
mReceiver.register(true);
|
||||
readSeparateNotificationVolumeConfig();
|
||||
Binder.withCleanCallingIdentity(()
|
||||
-> DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
ActivityThread.currentApplication().getMainExecutor(), this::onDeviceConfigChange));
|
||||
updateEffectsSuppressor();
|
||||
selectPreferenceIconState();
|
||||
|
||||
@@ -101,8 +76,6 @@ public class RingVolumePreferenceController extends
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
mReceiver.register(false);
|
||||
Binder.withCleanCallingIdentity(() ->
|
||||
DeviceConfig.removeOnPropertiesChangedListener(this::onDeviceConfigChange));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -112,9 +85,7 @@ public class RingVolumePreferenceController extends
|
||||
|
||||
@Override
|
||||
public int getAvailabilityStatus() {
|
||||
boolean separateNotification = isSeparateNotificationConfigEnabled();
|
||||
return !separateNotification && !mHelper.isSingleVolume()
|
||||
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
|
||||
return UNSUPPORTED_ON_DEVICE;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -124,14 +95,10 @@ public class RingVolumePreferenceController extends
|
||||
|
||||
@Override
|
||||
protected boolean hintsMatch(int hints) {
|
||||
boolean notificationSeparated = isSeparateNotificationConfigEnabled();
|
||||
return (hints & NotificationListenerService.HINT_HOST_DISABLE_CALL_EFFECTS) != 0
|
||||
|| (hints & NotificationListenerService.HINT_HOST_DISABLE_EFFECTS) != 0
|
||||
|| ((hints & NotificationListenerService.HINT_HOST_DISABLE_NOTIFICATION_EFFECTS)
|
||||
!= 0 && !notificationSeparated);
|
||||
|| (hints & NotificationListenerService.HINT_HOST_DISABLE_EFFECTS) != 0;
|
||||
}
|
||||
|
||||
|
||||
private final class H extends Handler {
|
||||
private static final int UPDATE_EFFECTS_SUPPRESSOR = 1;
|
||||
private static final int UPDATE_RINGER_MODE = 2;
|
||||
|
@@ -21,14 +21,11 @@ import android.app.NotificationManager;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.media.AudioManager;
|
||||
import android.os.Binder;
|
||||
import android.os.ServiceManager;
|
||||
import android.os.Vibrator;
|
||||
import android.provider.DeviceConfig;
|
||||
import android.util.Log;
|
||||
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@@ -48,11 +45,8 @@ public abstract class RingerModeAffectedVolumePreferenceController extends
|
||||
protected Vibrator mVibrator;
|
||||
protected int mRingerMode = AudioManager.RINGER_MODE_NORMAL;
|
||||
protected ComponentName mSuppressor;
|
||||
protected boolean mSeparateNotification;
|
||||
protected INotificationManager mNoMan;
|
||||
|
||||
private static final boolean CONFIG_SEPARATE_NOTIFICATION_DEFAULT_VAL = false;
|
||||
|
||||
public RingerModeAffectedVolumePreferenceController(Context context, String key, String tag) {
|
||||
super(context, key);
|
||||
mTag = tag;
|
||||
@@ -118,28 +112,6 @@ public abstract class RingerModeAffectedVolumePreferenceController extends
|
||||
return mMuteIcon;
|
||||
}
|
||||
|
||||
protected boolean isSeparateNotificationConfigEnabled() {
|
||||
return Binder.withCleanCallingIdentity(()
|
||||
-> DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
SystemUiDeviceConfigFlags.VOLUME_SEPARATE_NOTIFICATION,
|
||||
CONFIG_SEPARATE_NOTIFICATION_DEFAULT_VAL));
|
||||
}
|
||||
|
||||
/**
|
||||
* side effect: updates the cached value of the config
|
||||
* @return has the config changed?
|
||||
*/
|
||||
protected boolean readSeparateNotificationVolumeConfig() {
|
||||
boolean newVal = isSeparateNotificationConfigEnabled();
|
||||
|
||||
boolean valueUpdated = newVal != mSeparateNotification;
|
||||
if (valueUpdated) {
|
||||
mSeparateNotification = newVal;
|
||||
}
|
||||
|
||||
return valueUpdated;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates UI Icon in response to ringer mode changes.
|
||||
* @return whether the ringer mode has changed.
|
||||
|
@@ -16,7 +16,6 @@
|
||||
|
||||
package com.android.settings.notification;
|
||||
|
||||
import android.app.ActivityThread;
|
||||
import android.app.NotificationManager;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
@@ -26,17 +25,13 @@ import android.media.AudioManager;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.os.Message;
|
||||
import android.provider.DeviceConfig;
|
||||
import android.service.notification.NotificationListenerService;
|
||||
|
||||
import androidx.lifecycle.OnLifecycleEvent;
|
||||
|
||||
import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
|
||||
import com.android.settings.R;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* This slider is used to represent ring volume when ring is separated from notification
|
||||
*/
|
||||
@@ -60,32 +55,14 @@ public class SeparateRingVolumePreferenceController extends
|
||||
mVibrateIconId = R.drawable.ic_volume_ringer_vibrate;
|
||||
mSilentIconId = R.drawable.ic_ring_volume_off;
|
||||
|
||||
mSeparateNotification = isSeparateNotificationConfigEnabled();
|
||||
updateRingerMode();
|
||||
}
|
||||
|
||||
/**
|
||||
* Show/hide settings
|
||||
*/
|
||||
private void onDeviceConfigChange(DeviceConfig.Properties properties) {
|
||||
Set<String> changeSet = properties.getKeyset();
|
||||
if (changeSet.contains(SystemUiDeviceConfigFlags.VOLUME_SEPARATE_NOTIFICATION)) {
|
||||
boolean valueUpdated = readSeparateNotificationVolumeConfig();
|
||||
if (valueUpdated) {
|
||||
updateEffectsSuppressor();
|
||||
selectPreferenceIconState();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
|
||||
@Override
|
||||
public void onResume() {
|
||||
super.onResume();
|
||||
mReceiver.register(true);
|
||||
readSeparateNotificationVolumeConfig();
|
||||
DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_SYSTEMUI,
|
||||
ActivityThread.currentApplication().getMainExecutor(), this::onDeviceConfigChange);
|
||||
updateEffectsSuppressor();
|
||||
selectPreferenceIconState();
|
||||
|
||||
@@ -99,7 +76,6 @@ public class SeparateRingVolumePreferenceController extends
|
||||
public void onPause() {
|
||||
super.onPause();
|
||||
mReceiver.register(false);
|
||||
DeviceConfig.removeOnPropertiesChangedListener(this::onDeviceConfigChange);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -109,9 +85,7 @@ public class SeparateRingVolumePreferenceController extends
|
||||
|
||||
@Override
|
||||
public int getAvailabilityStatus() {
|
||||
boolean separateNotification = isSeparateNotificationConfigEnabled();
|
||||
return separateNotification && !mHelper.isSingleVolume()
|
||||
? AVAILABLE : UNSUPPORTED_ON_DEVICE;
|
||||
return !mHelper.isSingleVolume() ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -125,8 +99,6 @@ public class SeparateRingVolumePreferenceController extends
|
||||
|| (hints & NotificationListenerService.HINT_HOST_DISABLE_EFFECTS) != 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
private final class H extends Handler {
|
||||
private static final int UPDATE_EFFECTS_SUPPRESSOR = 1;
|
||||
private static final int UPDATE_RINGER_MODE = 2;
|
||||
|
@@ -196,7 +196,6 @@ public class SoundSettings extends DashboardFragment implements OnActivityResult
|
||||
ArrayList<VolumeSeekBarPreferenceController> volumeControllers = new ArrayList<>();
|
||||
volumeControllers.add(use(AlarmVolumePreferenceController.class));
|
||||
volumeControllers.add(use(MediaVolumePreferenceController.class));
|
||||
volumeControllers.add(use(RingVolumePreferenceController.class));
|
||||
volumeControllers.add(use(SeparateRingVolumePreferenceController.class));
|
||||
volumeControllers.add(use(NotificationVolumePreferenceController.class));
|
||||
volumeControllers.add(use(CallVolumePreferenceController.class));
|
||||
|
Reference in New Issue
Block a user