[Catalyst] Support restriction for Sound settings
NO_IFTTT=Catalyst only Bug: 377600992 Flag: com.android.settings.flags.catalyst_sound_screen Test: testdpc Change-Id: I2d768155f450f415c2279bbff69f94e8934b4383
This commit is contained in:
@@ -20,18 +20,16 @@ import android.content.Context
|
|||||||
import android.media.AudioManager
|
import android.media.AudioManager
|
||||||
import android.media.AudioManager.STREAM_BLUETOOTH_SCO
|
import android.media.AudioManager.STREAM_BLUETOOTH_SCO
|
||||||
import android.media.AudioManager.STREAM_VOICE_CALL
|
import android.media.AudioManager.STREAM_VOICE_CALL
|
||||||
import android.os.UserHandle
|
import android.os.UserManager
|
||||||
import android.os.UserManager.DISALLOW_ADJUST_VOLUME
|
|
||||||
import androidx.preference.Preference
|
import androidx.preference.Preference
|
||||||
|
import com.android.settings.PreferenceRestrictionMixin
|
||||||
import com.android.settings.R
|
import com.android.settings.R
|
||||||
import com.android.settingslib.RestrictedLockUtilsInternal
|
|
||||||
import com.android.settingslib.datastore.KeyValueStore
|
import com.android.settingslib.datastore.KeyValueStore
|
||||||
import com.android.settingslib.datastore.NoOpKeyedObservable
|
import com.android.settingslib.datastore.NoOpKeyedObservable
|
||||||
import com.android.settingslib.metadata.PersistentPreference
|
import com.android.settingslib.metadata.PersistentPreference
|
||||||
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
||||||
import com.android.settingslib.metadata.PreferenceIconProvider
|
import com.android.settingslib.metadata.PreferenceIconProvider
|
||||||
import com.android.settingslib.metadata.PreferenceMetadata
|
import com.android.settingslib.metadata.PreferenceMetadata
|
||||||
import com.android.settingslib.metadata.PreferenceRestrictionProvider
|
|
||||||
import com.android.settingslib.metadata.RangeValue
|
import com.android.settingslib.metadata.RangeValue
|
||||||
import com.android.settingslib.metadata.ReadWritePermit
|
import com.android.settingslib.metadata.ReadWritePermit
|
||||||
import com.android.settingslib.preference.PreferenceBinding
|
import com.android.settingslib.preference.PreferenceBinding
|
||||||
@@ -44,7 +42,7 @@ open class CallVolumePreference :
|
|||||||
RangeValue,
|
RangeValue,
|
||||||
PreferenceAvailabilityProvider,
|
PreferenceAvailabilityProvider,
|
||||||
PreferenceIconProvider,
|
PreferenceIconProvider,
|
||||||
PreferenceRestrictionProvider {
|
PreferenceRestrictionMixin {
|
||||||
override val key: String
|
override val key: String
|
||||||
get() = KEY
|
get() = KEY
|
||||||
|
|
||||||
@@ -55,18 +53,12 @@ open class CallVolumePreference :
|
|||||||
|
|
||||||
override fun isAvailable(context: Context) =
|
override fun isAvailable(context: Context) =
|
||||||
context.resources.getBoolean(R.bool.config_show_call_volume) &&
|
context.resources.getBoolean(R.bool.config_show_call_volume) &&
|
||||||
!createAudioHelper(context).isSingleVolume()
|
!createAudioHelper(context).isSingleVolume
|
||||||
|
|
||||||
override fun isRestricted(context: Context) =
|
override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context)
|
||||||
RestrictedLockUtilsInternal.hasBaseUserRestriction(
|
|
||||||
context,
|
override val restrictionKey: String
|
||||||
DISALLOW_ADJUST_VOLUME,
|
get() = UserManager.DISALLOW_ADJUST_VOLUME
|
||||||
UserHandle.myUserId()
|
|
||||||
) || RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
|
|
||||||
context,
|
|
||||||
DISALLOW_ADJUST_VOLUME,
|
|
||||||
UserHandle.myUserId()
|
|
||||||
) != null
|
|
||||||
|
|
||||||
override fun storage(context: Context): KeyValueStore {
|
override fun storage(context: Context): KeyValueStore {
|
||||||
val helper = createAudioHelper(context)
|
val helper = createAudioHelper(context)
|
||||||
|
@@ -18,18 +18,16 @@ package com.android.settings.notification
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.media.AudioManager.STREAM_MUSIC
|
import android.media.AudioManager.STREAM_MUSIC
|
||||||
import android.os.UserHandle
|
|
||||||
import android.os.UserManager
|
import android.os.UserManager
|
||||||
import androidx.preference.Preference
|
import androidx.preference.Preference
|
||||||
|
import com.android.settings.PreferenceRestrictionMixin
|
||||||
import com.android.settings.R
|
import com.android.settings.R
|
||||||
import com.android.settingslib.RestrictedLockUtilsInternal
|
|
||||||
import com.android.settingslib.datastore.KeyValueStore
|
import com.android.settingslib.datastore.KeyValueStore
|
||||||
import com.android.settingslib.datastore.NoOpKeyedObservable
|
import com.android.settingslib.datastore.NoOpKeyedObservable
|
||||||
import com.android.settingslib.metadata.PersistentPreference
|
import com.android.settingslib.metadata.PersistentPreference
|
||||||
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
||||||
import com.android.settingslib.metadata.PreferenceIconProvider
|
import com.android.settingslib.metadata.PreferenceIconProvider
|
||||||
import com.android.settingslib.metadata.PreferenceMetadata
|
import com.android.settingslib.metadata.PreferenceMetadata
|
||||||
import com.android.settingslib.metadata.PreferenceRestrictionProvider
|
|
||||||
import com.android.settingslib.metadata.RangeValue
|
import com.android.settingslib.metadata.RangeValue
|
||||||
import com.android.settingslib.metadata.ReadWritePermit
|
import com.android.settingslib.metadata.ReadWritePermit
|
||||||
import com.android.settingslib.preference.PreferenceBinding
|
import com.android.settingslib.preference.PreferenceBinding
|
||||||
@@ -42,7 +40,7 @@ open class MediaVolumePreference :
|
|||||||
RangeValue,
|
RangeValue,
|
||||||
PreferenceAvailabilityProvider,
|
PreferenceAvailabilityProvider,
|
||||||
PreferenceIconProvider,
|
PreferenceIconProvider,
|
||||||
PreferenceRestrictionProvider {
|
PreferenceRestrictionMixin {
|
||||||
override val key: String
|
override val key: String
|
||||||
get() = KEY
|
get() = KEY
|
||||||
|
|
||||||
@@ -58,17 +56,10 @@ open class MediaVolumePreference :
|
|||||||
override fun isAvailable(context: Context) =
|
override fun isAvailable(context: Context) =
|
||||||
context.resources.getBoolean(R.bool.config_show_media_volume)
|
context.resources.getBoolean(R.bool.config_show_media_volume)
|
||||||
|
|
||||||
override fun isRestricted(context: Context) =
|
override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context)
|
||||||
RestrictedLockUtilsInternal.hasBaseUserRestriction(
|
|
||||||
context,
|
override val restrictionKey: String
|
||||||
UserManager.DISALLOW_ADJUST_VOLUME,
|
get() = UserManager.DISALLOW_ADJUST_VOLUME
|
||||||
UserHandle.myUserId(),
|
|
||||||
) ||
|
|
||||||
RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
|
|
||||||
context,
|
|
||||||
UserManager.DISALLOW_ADJUST_VOLUME,
|
|
||||||
UserHandle.myUserId(),
|
|
||||||
) != null
|
|
||||||
|
|
||||||
override fun storage(context: Context): KeyValueStore {
|
override fun storage(context: Context): KeyValueStore {
|
||||||
val helper = createAudioHelper(context)
|
val helper = createAudioHelper(context)
|
||||||
@@ -107,9 +98,9 @@ open class MediaVolumePreference :
|
|||||||
|
|
||||||
open fun createAudioHelper(context: Context) = AudioHelper(context)
|
open fun createAudioHelper(context: Context) = AudioHelper(context)
|
||||||
|
|
||||||
fun updateContentDescription(preference: VolumeSeekBarPreference) {
|
private fun updateContentDescription(preference: VolumeSeekBarPreference) {
|
||||||
when {
|
when {
|
||||||
preference.isMuted() ->
|
preference.isMuted ->
|
||||||
preference.updateContentDescription(
|
preference.updateContentDescription(
|
||||||
preference.context.getString(
|
preference.context.getString(
|
||||||
R.string.volume_content_description_silent_mode,
|
R.string.volume_content_description_silent_mode,
|
||||||
|
@@ -24,21 +24,19 @@ import android.media.AudioManager.RINGER_MODE_SILENT
|
|||||||
import android.media.AudioManager.RINGER_MODE_VIBRATE
|
import android.media.AudioManager.RINGER_MODE_VIBRATE
|
||||||
import android.media.AudioManager.STREAM_RING
|
import android.media.AudioManager.STREAM_RING
|
||||||
import android.os.ServiceManager
|
import android.os.ServiceManager
|
||||||
import android.os.UserHandle
|
import android.os.UserManager
|
||||||
import android.os.UserManager.DISALLOW_ADJUST_VOLUME
|
|
||||||
import android.os.Vibrator
|
import android.os.Vibrator
|
||||||
import android.service.notification.NotificationListenerService.HINT_HOST_DISABLE_CALL_EFFECTS
|
import android.service.notification.NotificationListenerService.HINT_HOST_DISABLE_CALL_EFFECTS
|
||||||
import android.service.notification.NotificationListenerService.HINT_HOST_DISABLE_EFFECTS
|
import android.service.notification.NotificationListenerService.HINT_HOST_DISABLE_EFFECTS
|
||||||
import androidx.preference.Preference
|
import androidx.preference.Preference
|
||||||
|
import com.android.settings.PreferenceRestrictionMixin
|
||||||
import com.android.settings.R
|
import com.android.settings.R
|
||||||
import com.android.settingslib.RestrictedLockUtilsInternal
|
|
||||||
import com.android.settingslib.datastore.KeyValueStore
|
import com.android.settingslib.datastore.KeyValueStore
|
||||||
import com.android.settingslib.datastore.NoOpKeyedObservable
|
import com.android.settingslib.datastore.NoOpKeyedObservable
|
||||||
import com.android.settingslib.metadata.PersistentPreference
|
import com.android.settingslib.metadata.PersistentPreference
|
||||||
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
|
||||||
import com.android.settingslib.metadata.PreferenceIconProvider
|
import com.android.settingslib.metadata.PreferenceIconProvider
|
||||||
import com.android.settingslib.metadata.PreferenceMetadata
|
import com.android.settingslib.metadata.PreferenceMetadata
|
||||||
import com.android.settingslib.metadata.PreferenceRestrictionProvider
|
|
||||||
import com.android.settingslib.metadata.RangeValue
|
import com.android.settingslib.metadata.RangeValue
|
||||||
import com.android.settingslib.metadata.ReadWritePermit
|
import com.android.settingslib.metadata.ReadWritePermit
|
||||||
import com.android.settingslib.preference.PreferenceBinding
|
import com.android.settingslib.preference.PreferenceBinding
|
||||||
@@ -51,7 +49,8 @@ open class SeparateRingVolumePreference :
|
|||||||
RangeValue,
|
RangeValue,
|
||||||
PreferenceAvailabilityProvider,
|
PreferenceAvailabilityProvider,
|
||||||
PreferenceIconProvider,
|
PreferenceIconProvider,
|
||||||
PreferenceRestrictionProvider {
|
PreferenceRestrictionMixin {
|
||||||
|
|
||||||
override val key: String
|
override val key: String
|
||||||
get() = KEY
|
get() = KEY
|
||||||
|
|
||||||
@@ -64,21 +63,12 @@ open class SeparateRingVolumePreference :
|
|||||||
else -> R.drawable.ic_ring_volume
|
else -> R.drawable.ic_ring_volume
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun isAvailable(context: Context) = !createAudioHelper(context).isSingleVolume()
|
override fun isAvailable(context: Context) = !createAudioHelper(context).isSingleVolume
|
||||||
|
|
||||||
override fun isEnabled(context: Context) =
|
override fun isEnabled(context: Context) = super<PreferenceRestrictionMixin>.isEnabled(context)
|
||||||
!RestrictedLockUtilsInternal.hasBaseUserRestriction(
|
|
||||||
context,
|
|
||||||
DISALLOW_ADJUST_VOLUME,
|
|
||||||
UserHandle.myUserId(),
|
|
||||||
)
|
|
||||||
|
|
||||||
override fun isRestricted(context: Context) =
|
override val restrictionKey: String
|
||||||
RestrictedLockUtilsInternal.checkIfRestrictionEnforced(
|
get() = UserManager.DISALLOW_ADJUST_VOLUME
|
||||||
context,
|
|
||||||
DISALLOW_ADJUST_VOLUME,
|
|
||||||
UserHandle.myUserId(),
|
|
||||||
) != null
|
|
||||||
|
|
||||||
override fun storage(context: Context): KeyValueStore {
|
override fun storage(context: Context): KeyValueStore {
|
||||||
val helper = createAudioHelper(context)
|
val helper = createAudioHelper(context)
|
||||||
@@ -118,7 +108,7 @@ open class SeparateRingVolumePreference :
|
|||||||
|
|
||||||
open fun createAudioHelper(context: Context) = AudioHelper(context)
|
open fun createAudioHelper(context: Context) = AudioHelper(context)
|
||||||
|
|
||||||
fun updateContentDescription(preference: VolumeSeekBarPreference) {
|
private fun updateContentDescription(preference: VolumeSeekBarPreference) {
|
||||||
val context = preference.context
|
val context = preference.context
|
||||||
val ringerMode = getEffectiveRingerMode(context)
|
val ringerMode = getEffectiveRingerMode(context)
|
||||||
when (ringerMode) {
|
when (ringerMode) {
|
||||||
@@ -152,13 +142,13 @@ open class SeparateRingVolumePreference :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getSuppressionText(context: Context): String? {
|
private fun getSuppressionText(context: Context): String? {
|
||||||
val suppressor = NotificationManager.from(context).getEffectsSuppressor()
|
val suppressor = NotificationManager.from(context).getEffectsSuppressor()
|
||||||
val notificationManager =
|
val notificationManager =
|
||||||
INotificationManager.Stub.asInterface(
|
INotificationManager.Stub.asInterface(
|
||||||
ServiceManager.getService(Context.NOTIFICATION_SERVICE)
|
ServiceManager.getService(Context.NOTIFICATION_SERVICE)
|
||||||
)
|
)
|
||||||
val hints = notificationManager.getHintsFromListenerNoToken()
|
val hints = notificationManager.hintsFromListenerNoToken
|
||||||
return when {
|
return when {
|
||||||
hintsMatch(hints) -> SuppressorHelper.getSuppressionText(context, suppressor)
|
hintsMatch(hints) -> SuppressorHelper.getSuppressionText(context, suppressor)
|
||||||
else -> null
|
else -> null
|
||||||
|
Reference in New Issue
Block a user