Merge "[Catalyst] Implement metrics/tags for Settings Catalyst" into main

This commit is contained in:
Treehugger Robot
2025-02-09 16:55:47 -08:00
committed by Android (Google) Code Review
12 changed files with 114 additions and 28 deletions

View File

@@ -15,13 +15,16 @@
*/ */
package com.android.settings.accessibility package com.android.settings.accessibility
import android.app.settings.SettingsEnums.ACTION_VIBRATION_HAPTICS
import android.content.Context import android.content.Context
import android.os.VibrationAttributes import android.os.VibrationAttributes
import android.os.Vibrator import android.os.Vibrator
import android.provider.Settings import android.provider.Settings
import android.widget.CompoundButton import android.widget.CompoundButton
import android.widget.CompoundButton.OnCheckedChangeListener import android.widget.CompoundButton.OnCheckedChangeListener
import com.android.settings.PreferenceActionMetricsProvider
import com.android.settings.R import com.android.settings.R
import com.android.settings.contract.KEY_VIBRATION_HAPTICS
import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.KeyedObservableDelegate import com.android.settingslib.datastore.KeyedObservableDelegate
import com.android.settingslib.datastore.SettingsStore import com.android.settingslib.datastore.SettingsStore
@@ -39,6 +42,7 @@ class VibrationMainSwitchPreference :
key = Settings.System.VIBRATE_ON, key = Settings.System.VIBRATE_ON,
title = R.string.accessibility_vibration_primary_switch_title, title = R.string.accessibility_vibration_primary_switch_title,
), ),
PreferenceActionMetricsProvider,
PreferenceLifecycleProvider, PreferenceLifecycleProvider,
OnCheckedChangeListener { OnCheckedChangeListener {
override val keywords: Int override val keywords: Int
@@ -46,6 +50,11 @@ class VibrationMainSwitchPreference :
lateinit var vibrator: Vibrator lateinit var vibrator: Vibrator
override val preferenceActionMetrics: Int
get() = ACTION_VIBRATION_HAPTICS
override fun tags(context: Context) = arrayOf(KEY_VIBRATION_HAPTICS)
override fun storage(context: Context): KeyValueStore = override fun storage(context: Context): KeyValueStore =
VibrationMainSwitchToggleStorage(SettingsSystemStore.get(context)) VibrationMainSwitchToggleStorage(SettingsSystemStore.get(context))

View File

@@ -16,12 +16,14 @@
package com.android.settings.display package com.android.settings.display
import android.app.settings.SettingsEnums.ACTION_AMBIENT_DISPLAY_ALWAYS_ON
import android.content.Context import android.content.Context
import android.hardware.display.AmbientDisplayConfiguration import android.hardware.display.AmbientDisplayConfiguration
import android.os.SystemProperties import android.os.SystemProperties
import android.os.UserHandle import android.os.UserHandle
import android.os.UserManager import android.os.UserManager
import android.provider.Settings.Secure.DOZE_ALWAYS_ON import android.provider.Settings.Secure.DOZE_ALWAYS_ON
import com.android.settings.PreferenceActionMetricsProvider
import com.android.settings.PreferenceRestrictionMixin import com.android.settings.PreferenceRestrictionMixin
import com.android.settings.R import com.android.settings.R
import com.android.settings.contract.KEY_AMBIENT_DISPLAY_ALWAYS_ON import com.android.settings.contract.KEY_AMBIENT_DISPLAY_ALWAYS_ON
@@ -41,6 +43,7 @@ import com.android.settingslib.metadata.SwitchPreference
// LINT.IfChange // LINT.IfChange
class AmbientDisplayAlwaysOnPreference : class AmbientDisplayAlwaysOnPreference :
SwitchPreference(KEY, R.string.doze_always_on_title, R.string.doze_always_on_summary), SwitchPreference(KEY, R.string.doze_always_on_title, R.string.doze_always_on_summary),
PreferenceActionMetricsProvider,
PreferenceAvailabilityProvider, PreferenceAvailabilityProvider,
PreferenceSummaryProvider, PreferenceSummaryProvider,
PreferenceRestrictionMixin { PreferenceRestrictionMixin {
@@ -48,6 +51,11 @@ class AmbientDisplayAlwaysOnPreference :
override val keywords: Int override val keywords: Int
get() = R.string.keywords_always_show_time_info get() = R.string.keywords_always_show_time_info
override val preferenceActionMetrics: Int
get() = ACTION_AMBIENT_DISPLAY_ALWAYS_ON
override fun tags(context: Context) = arrayOf(KEY_AMBIENT_DISPLAY_ALWAYS_ON)
override val restrictionKeys: Array<String> override val restrictionKeys: Array<String>
get() = arrayOf(UserManager.DISALLOW_AMBIENT_DISPLAY) get() = arrayOf(UserManager.DISALLOW_AMBIENT_DISPLAY)

View File

@@ -15,30 +15,32 @@
*/ */
package com.android.settings.display package com.android.settings.display
import android.app.settings.SettingsEnums import android.app.settings.SettingsEnums.OPEN_BATTERY_PERCENTAGE
import android.content.Context import android.content.Context
import android.provider.Settings import android.provider.Settings
import androidx.preference.Preference import com.android.settings.PreferenceActionMetricsProvider
import com.android.settings.R import com.android.settings.R
import com.android.settings.Utils import com.android.settings.Utils
import com.android.settings.overlay.FeatureFactory.Companion.featureFactory import com.android.settings.contract.KEY_BATTERY_PERCENTAGE
import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.KeyedObservableDelegate import com.android.settingslib.datastore.KeyedObservableDelegate
import com.android.settingslib.datastore.SettingsStore import com.android.settingslib.datastore.SettingsStore
import com.android.settingslib.datastore.SettingsSystemStore import com.android.settingslib.datastore.SettingsSystemStore
import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.PreferenceMetadata
import com.android.settingslib.metadata.ReadWritePermit import com.android.settingslib.metadata.ReadWritePermit
import com.android.settingslib.metadata.SensitivityLevel import com.android.settingslib.metadata.SensitivityLevel
import com.android.settingslib.metadata.SwitchPreference import com.android.settingslib.metadata.SwitchPreference
import com.android.settingslib.preference.SwitchPreferenceBinding
// LINT.IfChange // LINT.IfChange
class BatteryPercentageSwitchPreference : class BatteryPercentageSwitchPreference :
SwitchPreference(KEY, R.string.battery_percentage, R.string.battery_percentage_description), SwitchPreference(KEY, R.string.battery_percentage, R.string.battery_percentage_description),
SwitchPreferenceBinding, PreferenceActionMetricsProvider,
PreferenceAvailabilityProvider, PreferenceAvailabilityProvider {
Preference.OnPreferenceChangeListener {
override val preferenceActionMetrics: Int
get() = OPEN_BATTERY_PERCENTAGE
override fun tags(context: Context) = arrayOf(KEY_BATTERY_PERCENTAGE)
override fun storage(context: Context): KeyValueStore = override fun storage(context: Context): KeyValueStore =
BatteryPercentageStorage(context, SettingsSystemStore.get(context)) BatteryPercentageStorage(context, SettingsSystemStore.get(context))
@@ -66,22 +68,6 @@ class BatteryPercentageSwitchPreference :
override val sensitivityLevel override val sensitivityLevel
get() = SensitivityLevel.NO_SENSITIVITY get() = SensitivityLevel.NO_SENSITIVITY
override fun bind(preference: Preference, metadata: PreferenceMetadata) {
super.bind(preference, metadata)
preference.onPreferenceChangeListener = this
}
override fun onPreferenceChange(preference: Preference, newValue: Any?): Boolean {
val showPercentage = newValue as Boolean
featureFactory.metricsFeatureProvider.action(
preference.context,
SettingsEnums.OPEN_BATTERY_PERCENTAGE,
showPercentage,
)
return true
}
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
private class BatteryPercentageStorage( private class BatteryPercentageStorage(
private val context: Context, private val context: Context,

View File

@@ -16,6 +16,7 @@
package com.android.settings.display package com.android.settings.display
import android.app.ActivityOptions import android.app.ActivityOptions
import android.app.settings.SettingsEnums.ACTION_BRIGHTNESS_LEVEL
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.Intent.ACTION_SHOW_BRIGHTNESS_DIALOG import android.content.Intent.ACTION_SHOW_BRIGHTNESS_DIALOG
@@ -26,9 +27,11 @@ import android.hardware.display.DisplayManager.DisplayListener
import android.os.UserManager import android.os.UserManager
import android.provider.Settings.System import android.provider.Settings.System
import androidx.preference.Preference import androidx.preference.Preference
import com.android.settings.PreferenceActionMetricsProvider
import com.android.settings.PreferenceRestrictionMixin import com.android.settings.PreferenceRestrictionMixin
import com.android.settings.R import com.android.settings.R
import com.android.settings.Utils import com.android.settings.Utils
import com.android.settings.contract.KEY_BRIGHTNESS_LEVEL
import com.android.settings.core.SettingsBaseActivity import com.android.settings.core.SettingsBaseActivity
import com.android.settingslib.RestrictedPreference import com.android.settingslib.RestrictedPreference
import com.android.settingslib.datastore.AbstractKeyedDataObservable import com.android.settingslib.datastore.AbstractKeyedDataObservable
@@ -56,6 +59,7 @@ class BrightnessLevelPreference :
IntRangeValuePreference, IntRangeValuePreference,
PreferenceBinding, PreferenceBinding,
PreferenceRestrictionMixin, PreferenceRestrictionMixin,
PreferenceActionMetricsProvider,
PreferenceSummaryProvider, PreferenceSummaryProvider,
Preference.OnPreferenceClickListener { Preference.OnPreferenceClickListener {
@@ -68,6 +72,11 @@ class BrightnessLevelPreference :
override val keywords: Int override val keywords: Int
get() = R.string.keywords_display_brightness_level get() = R.string.keywords_display_brightness_level
override val preferenceActionMetrics: Int
get() = ACTION_BRIGHTNESS_LEVEL
override fun tags(context: Context) = arrayOf(KEY_BRIGHTNESS_LEVEL)
override fun getSummary(context: Context): CharSequence? = override fun getSummary(context: Context): CharSequence? =
NumberFormat.getPercentInstance().format(context.brightnessPercent) NumberFormat.getPercentInstance().format(context.brightnessPercent)

View File

@@ -15,6 +15,7 @@
*/ */
package com.android.settings.display package com.android.settings.display
import android.app.settings.SettingsEnums.ACTION_SMOOTH_DISPLAY
import android.content.Context import android.content.Context
import android.hardware.display.DisplayManager import android.hardware.display.DisplayManager
import android.provider.DeviceConfig import android.provider.DeviceConfig
@@ -23,7 +24,9 @@ import com.android.internal.display.RefreshRateSettingsUtils.DEFAULT_REFRESH_RAT
import com.android.internal.display.RefreshRateSettingsUtils.findHighestRefreshRateAmongAllDisplays import com.android.internal.display.RefreshRateSettingsUtils.findHighestRefreshRateAmongAllDisplays
import com.android.internal.display.RefreshRateSettingsUtils.findHighestRefreshRateForDefaultDisplay import com.android.internal.display.RefreshRateSettingsUtils.findHighestRefreshRateForDefaultDisplay
import com.android.server.display.feature.flags.Flags import com.android.server.display.feature.flags.Flags
import com.android.settings.PreferenceActionMetricsProvider
import com.android.settings.R import com.android.settings.R
import com.android.settings.contract.KEY_SMOOTH_DISPLAY
import com.android.settingslib.datastore.HandlerExecutor import com.android.settingslib.datastore.HandlerExecutor
import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.KeyedObservableDelegate import com.android.settingslib.datastore.KeyedObservableDelegate
@@ -41,12 +44,18 @@ import kotlin.math.roundToInt
// LINT.IfChange // LINT.IfChange
class PeakRefreshRateSwitchPreference : class PeakRefreshRateSwitchPreference :
SwitchPreference(KEY, R.string.peak_refresh_rate_title), SwitchPreference(KEY, R.string.peak_refresh_rate_title),
PreferenceActionMetricsProvider,
PreferenceAvailabilityProvider, PreferenceAvailabilityProvider,
PreferenceSummaryProvider, PreferenceSummaryProvider,
PreferenceLifecycleProvider { PreferenceLifecycleProvider {
private var propertiesChangedListener: DeviceConfig.OnPropertiesChangedListener? = null private var propertiesChangedListener: DeviceConfig.OnPropertiesChangedListener? = null
override val preferenceActionMetrics: Int
get() = ACTION_SMOOTH_DISPLAY
override fun tags(context: Context) = arrayOf(KEY_SMOOTH_DISPLAY)
override fun storage(context: Context): KeyValueStore = override fun storage(context: Context): KeyValueStore =
PeakRefreshRateStore(context, SettingsSystemStore.get(context)) PeakRefreshRateStore(context, SettingsSystemStore.get(context))

View File

@@ -17,11 +17,14 @@
package com.android.settings.display.darkmode package com.android.settings.display.darkmode
import android.Manifest import android.Manifest
import android.app.settings.SettingsEnums.ACTION_DARK_THEME
import android.content.Context import android.content.Context
import android.os.PowerManager import android.os.PowerManager
import androidx.preference.Preference import androidx.preference.Preference
import androidx.preference.PreferenceScreen import androidx.preference.PreferenceScreen
import com.android.settings.PreferenceActionMetricsProvider
import com.android.settings.R import com.android.settings.R
import com.android.settings.contract.KEY_DARK_THEME
import com.android.settings.flags.Flags import com.android.settings.flags.Flags
import com.android.settingslib.PrimarySwitchPreferenceBinding import com.android.settingslib.PrimarySwitchPreferenceBinding
import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.KeyValueStore
@@ -42,6 +45,7 @@ class DarkModeScreen(context: Context) :
PreferenceScreenCreator, PreferenceScreenCreator,
PreferenceScreenBinding, // binding for screen page PreferenceScreenBinding, // binding for screen page
PrimarySwitchPreferenceBinding, // binding for screen entry point widget PrimarySwitchPreferenceBinding, // binding for screen entry point widget
PreferenceActionMetricsProvider,
BooleanValuePreference, BooleanValuePreference,
PreferenceSummaryProvider { PreferenceSummaryProvider {
@@ -56,6 +60,11 @@ class DarkModeScreen(context: Context) :
override val keywords: Int override val keywords: Int
get() = R.string.keywords_dark_ui_mode get() = R.string.keywords_dark_ui_mode
override val preferenceActionMetrics: Int
get() = ACTION_DARK_THEME
override fun tags(context: Context) = arrayOf(KEY_DARK_THEME)
override fun getReadPermissions(context: Context) = Permissions.EMPTY override fun getReadPermissions(context: Context) = Permissions.EMPTY
override fun getWritePermissions(context: Context) = override fun getWritePermissions(context: Context) =

View File

@@ -16,10 +16,13 @@
package com.android.settings.fuelgauge package com.android.settings.fuelgauge
import android.app.settings.SettingsEnums.ACTION_BATTERY_LEVEL
import android.content.Context import android.content.Context
import androidx.annotation.VisibleForTesting import androidx.annotation.VisibleForTesting
import androidx.preference.Preference import androidx.preference.Preference
import com.android.settings.PreferenceActionMetricsProvider
import com.android.settings.R import com.android.settings.R
import com.android.settings.contract.KEY_BATTERY_LEVEL
import com.android.settings.fuelgauge.BatteryBroadcastReceiver.BatteryUpdateType.BATTERY_NOT_PRESENT import com.android.settings.fuelgauge.BatteryBroadcastReceiver.BatteryUpdateType.BATTERY_NOT_PRESENT
import com.android.settingslib.Utils import com.android.settingslib.Utils
import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.KeyValueStore
@@ -37,7 +40,10 @@ import com.android.settingslib.widget.UsageProgressBarPreference
// LINT.IfChange // LINT.IfChange
class BatteryHeaderPreference : class BatteryHeaderPreference :
IntRangeValuePreference, PreferenceBinding, PreferenceLifecycleProvider { IntRangeValuePreference,
PreferenceBinding,
PreferenceActionMetricsProvider,
PreferenceLifecycleProvider {
@VisibleForTesting var batteryBroadcastReceiver: BatteryBroadcastReceiver? = null @VisibleForTesting var batteryBroadcastReceiver: BatteryBroadcastReceiver? = null
@@ -47,6 +53,11 @@ class BatteryHeaderPreference :
override val title: Int override val title: Int
get() = R.string.summary_placeholder get() = R.string.summary_placeholder
override val preferenceActionMetrics: Int
get() = ACTION_BATTERY_LEVEL
override fun tags(context: Context) = arrayOf(KEY_BATTERY_LEVEL)
override fun createWidget(context: Context) = UsageProgressBarPreference(context) override fun createWidget(context: Context) = UsageProgressBarPreference(context)
override fun bind(preference: Preference, metadata: PreferenceMetadata) { override fun bind(preference: Preference, metadata: PreferenceMetadata) {

View File

@@ -16,10 +16,13 @@
package com.android.settings.network package com.android.settings.network
import android.app.settings.SettingsEnums.ACTION_ADAPTIVE_CONNECTIVITY
import android.content.Context import android.content.Context
import android.net.wifi.WifiManager import android.net.wifi.WifiManager
import android.provider.Settings.Secure.ADAPTIVE_CONNECTIVITY_ENABLED import android.provider.Settings.Secure.ADAPTIVE_CONNECTIVITY_ENABLED
import com.android.settings.PreferenceActionMetricsProvider
import com.android.settings.R import com.android.settings.R
import com.android.settings.contract.KEY_ADAPTIVE_CONNECTIVITY
import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.KeyedObservableDelegate import com.android.settingslib.datastore.KeyedObservableDelegate
import com.android.settingslib.datastore.SettingsSecureStore import com.android.settingslib.datastore.SettingsSecureStore
@@ -31,7 +34,13 @@ import com.android.settingslib.metadata.SensitivityLevel
// LINT.IfChange // LINT.IfChange
class AdaptiveConnectivityTogglePreference : class AdaptiveConnectivityTogglePreference :
MainSwitchPreference(KEY, R.string.adaptive_connectivity_main_switch_title) { MainSwitchPreference(KEY, R.string.adaptive_connectivity_main_switch_title),
PreferenceActionMetricsProvider {
override val preferenceActionMetrics: Int
get() = ACTION_ADAPTIVE_CONNECTIVITY
override fun tags(context: Context) = arrayOf(KEY_ADAPTIVE_CONNECTIVITY)
override fun storage(context: Context): KeyValueStore = override fun storage(context: Context): KeyValueStore =
AdaptiveConnectivityToggleStorage(context, SettingsSecureStore.get(context)) AdaptiveConnectivityToggleStorage(context, SettingsSecureStore.get(context))

View File

@@ -19,6 +19,7 @@ package com.android.settings.notification
import android.Manifest.permission.MODIFY_AUDIO_SETTINGS import android.Manifest.permission.MODIFY_AUDIO_SETTINGS
import android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED import android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED
import android.Manifest.permission.MODIFY_PHONE_STATE import android.Manifest.permission.MODIFY_PHONE_STATE
import android.app.settings.SettingsEnums.ACTION_CALL_VOLUME
import android.content.Context import android.content.Context
import android.content.pm.PackageManager.FEATURE_AUTOMOTIVE import android.content.pm.PackageManager.FEATURE_AUTOMOTIVE
import android.media.AudioManager import android.media.AudioManager
@@ -26,8 +27,10 @@ import android.media.AudioManager.STREAM_BLUETOOTH_SCO
import android.media.AudioManager.STREAM_VOICE_CALL import android.media.AudioManager.STREAM_VOICE_CALL
import android.os.UserManager import android.os.UserManager
import androidx.preference.Preference import androidx.preference.Preference
import com.android.settings.PreferenceActionMetricsProvider
import com.android.settings.PreferenceRestrictionMixin import com.android.settings.PreferenceRestrictionMixin
import com.android.settings.R import com.android.settings.R
import com.android.settings.contract.KEY_CALL_VOLUME
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.datastore.Permissions import com.android.settingslib.datastore.Permissions
@@ -44,6 +47,7 @@ import com.android.settingslib.preference.PreferenceBinding
open class CallVolumePreference : open class CallVolumePreference :
IntRangeValuePreference, IntRangeValuePreference,
PreferenceBinding, PreferenceBinding,
PreferenceActionMetricsProvider,
PreferenceAvailabilityProvider, PreferenceAvailabilityProvider,
PreferenceIconProvider, PreferenceIconProvider,
PreferenceRestrictionMixin { PreferenceRestrictionMixin {
@@ -53,6 +57,11 @@ open class CallVolumePreference :
override val title: Int override val title: Int
get() = R.string.call_volume_option_title get() = R.string.call_volume_option_title
override val preferenceActionMetrics: Int
get() = ACTION_CALL_VOLUME
override fun tags(context: Context) = arrayOf(KEY_CALL_VOLUME)
override fun getIcon(context: Context) = R.drawable.ic_local_phone_24_lib override fun getIcon(context: Context) = R.drawable.ic_local_phone_24_lib
override fun isAvailable(context: Context) = override fun isAvailable(context: Context) =

View File

@@ -18,13 +18,16 @@ package com.android.settings.notification
import android.Manifest.permission.MODIFY_AUDIO_SETTINGS import android.Manifest.permission.MODIFY_AUDIO_SETTINGS
import android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED import android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED
import android.app.settings.SettingsEnums.ACTION_MEDIA_VOLUME
import android.content.Context import android.content.Context
import android.content.pm.PackageManager.FEATURE_AUTOMOTIVE import android.content.pm.PackageManager.FEATURE_AUTOMOTIVE
import android.media.AudioManager.STREAM_MUSIC import android.media.AudioManager.STREAM_MUSIC
import android.os.UserManager import android.os.UserManager
import androidx.preference.Preference import androidx.preference.Preference
import com.android.settings.PreferenceActionMetricsProvider
import com.android.settings.PreferenceRestrictionMixin import com.android.settings.PreferenceRestrictionMixin
import com.android.settings.R import com.android.settings.R
import com.android.settings.contract.KEY_MEDIA_VOLUME
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.datastore.Permissions import com.android.settingslib.datastore.Permissions
@@ -41,6 +44,7 @@ import com.android.settingslib.preference.PreferenceBinding
open class MediaVolumePreference : open class MediaVolumePreference :
IntRangeValuePreference, IntRangeValuePreference,
PreferenceBinding, PreferenceBinding,
PreferenceActionMetricsProvider,
PreferenceAvailabilityProvider, PreferenceAvailabilityProvider,
PreferenceIconProvider, PreferenceIconProvider,
PreferenceRestrictionMixin { PreferenceRestrictionMixin {
@@ -50,6 +54,11 @@ open class MediaVolumePreference :
override val title: Int override val title: Int
get() = R.string.media_volume_option_title get() = R.string.media_volume_option_title
override val preferenceActionMetrics: Int
get() = ACTION_MEDIA_VOLUME
override fun tags(context: Context) = arrayOf(KEY_MEDIA_VOLUME)
override fun getIcon(context: Context) = override fun getIcon(context: Context) =
when { when {
VolumeHelper.isMuted(context, STREAM_MUSIC) -> R.drawable.ic_media_stream_off VolumeHelper.isMuted(context, STREAM_MUSIC) -> R.drawable.ic_media_stream_off

View File

@@ -21,6 +21,7 @@ import android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED
import android.app.INotificationManager import android.app.INotificationManager
import android.app.NotificationManager import android.app.NotificationManager
import android.app.NotificationManager.ACTION_EFFECTS_SUPPRESSOR_CHANGED import android.app.NotificationManager.ACTION_EFFECTS_SUPPRESSOR_CHANGED
import android.app.settings.SettingsEnums.ACTION_RING_VOLUME
import android.content.BroadcastReceiver import android.content.BroadcastReceiver
import android.content.Context import android.content.Context
import android.content.Context.NOTIFICATION_SERVICE import android.content.Context.NOTIFICATION_SERVICE
@@ -39,8 +40,10 @@ 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.PreferenceActionMetricsProvider
import com.android.settings.PreferenceRestrictionMixin import com.android.settings.PreferenceRestrictionMixin
import com.android.settings.R import com.android.settings.R
import com.android.settings.contract.KEY_RING_VOLUME
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.datastore.Permissions import com.android.settingslib.datastore.Permissions
@@ -59,6 +62,7 @@ import com.android.settingslib.preference.PreferenceBinding
open class SeparateRingVolumePreference : open class SeparateRingVolumePreference :
IntRangeValuePreference, IntRangeValuePreference,
PreferenceBinding, PreferenceBinding,
PreferenceActionMetricsProvider,
PreferenceAvailabilityProvider, PreferenceAvailabilityProvider,
PreferenceIconProvider, PreferenceIconProvider,
PreferenceLifecycleProvider, PreferenceLifecycleProvider,
@@ -72,6 +76,11 @@ open class SeparateRingVolumePreference :
override val title: Int override val title: Int
get() = R.string.separate_ring_volume_option_title get() = R.string.separate_ring_volume_option_title
override val preferenceActionMetrics: Int
get() = ACTION_RING_VOLUME
override fun tags(context: Context) = arrayOf(KEY_RING_VOLUME)
override fun getIcon(context: Context) = context.getIconRes() override fun getIcon(context: Context) = context.getIconRes()
override fun isAvailable(context: Context) = !createAudioHelper(context).isSingleVolume override fun isAvailable(context: Context) = !createAudioHelper(context).isSingleVolume

View File

@@ -17,7 +17,8 @@
package com.android.settings.wifi.tether package com.android.settings.wifi.tether
import android.Manifest import android.Manifest
import android.app.settings.SettingsEnums import android.app.settings.SettingsEnums.ACTION_WIFI_HOTSPOT
import android.app.settings.SettingsEnums.WIFI_TETHER_SETTINGS
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.TetheringManager import android.net.TetheringManager
@@ -27,9 +28,11 @@ import android.net.wifi.WifiManager
import android.os.UserManager import android.os.UserManager
import android.text.BidiFormatter import android.text.BidiFormatter
import android.util.Log import android.util.Log
import com.android.settings.PreferenceActionMetricsProvider
import com.android.settings.PreferenceRestrictionMixin import com.android.settings.PreferenceRestrictionMixin
import com.android.settings.R import com.android.settings.R
import com.android.settings.Utils import com.android.settings.Utils
import com.android.settings.contract.KEY_WIFI_HOTSPOT
import com.android.settings.core.SubSettingLauncher import com.android.settings.core.SubSettingLauncher
import com.android.settings.datausage.DataSaverMainSwitchPreference.Companion.KEY as DATA_SAVER_KEY import com.android.settings.datausage.DataSaverMainSwitchPreference.Companion.KEY as DATA_SAVER_KEY
import com.android.settings.wifi.WifiUtils.canShowWifiHotspot import com.android.settings.wifi.WifiUtils.canShowWifiHotspot
@@ -56,10 +59,16 @@ import com.android.settingslib.wifi.WifiUtils.Companion.getWifiTetherSummaryForC
class WifiHotspotSwitchPreference(context: Context, dataSaverStore: KeyValueStore) : class WifiHotspotSwitchPreference(context: Context, dataSaverStore: KeyValueStore) :
SwitchPreference(KEY, R.string.wifi_hotspot_checkbox_text), SwitchPreference(KEY, R.string.wifi_hotspot_checkbox_text),
PrimarySwitchPreferenceBinding, PrimarySwitchPreferenceBinding,
PreferenceActionMetricsProvider,
PreferenceAvailabilityProvider, PreferenceAvailabilityProvider,
PreferenceSummaryProvider, PreferenceSummaryProvider,
PreferenceRestrictionMixin { PreferenceRestrictionMixin {
override val preferenceActionMetrics: Int
get() = ACTION_WIFI_HOTSPOT
override fun tags(context: Context) = arrayOf(KEY_WIFI_HOTSPOT)
private val wifiHotspotStore = WifiHotspotStore(context, dataSaverStore) private val wifiHotspotStore = WifiHotspotStore(context, dataSaverStore)
override fun isAvailable(context: Context) = override fun isAvailable(context: Context) =
@@ -97,7 +106,7 @@ class WifiHotspotSwitchPreference(context: Context, dataSaverStore: KeyValueStor
.apply { .apply {
setDestination(WifiTetherSettings::class.java.name) setDestination(WifiTetherSettings::class.java.name)
setTitleRes(R.string.wifi_hotspot_checkbox_text) setTitleRes(R.string.wifi_hotspot_checkbox_text)
setSourceMetricsCategory(SettingsEnums.WIFI_TETHER_SETTINGS) setSourceMetricsCategory(WIFI_TETHER_SETTINGS)
} }
.toIntent() .toIntent()