Use OnPreferenceChangeListener for VibrationMainSwitchPreference
NO_IFTTT=Catalyst only Bug: 400335057 Flag: com.android.settings.flags.catalyst Test: manual Change-Id: Id517a7246ba797fd6bcd9baeb6169acf913bcf7f
This commit is contained in:
@@ -20,8 +20,7 @@ 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 androidx.preference.Preference
|
||||||
import android.widget.CompoundButton.OnCheckedChangeListener
|
|
||||||
import com.android.settings.R
|
import com.android.settings.R
|
||||||
import com.android.settings.contract.KEY_VIBRATION_HAPTICS
|
import com.android.settings.contract.KEY_VIBRATION_HAPTICS
|
||||||
import com.android.settings.metrics.PreferenceActionMetricsProvider
|
import com.android.settings.metrics.PreferenceActionMetricsProvider
|
||||||
@@ -29,27 +28,29 @@ 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.MainSwitchPreference
|
import com.android.settingslib.metadata.BooleanValuePreference
|
||||||
import com.android.settingslib.metadata.PreferenceLifecycleContext
|
import com.android.settingslib.metadata.PreferenceMetadata
|
||||||
import com.android.settingslib.metadata.PreferenceLifecycleProvider
|
|
||||||
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.preference.MainSwitchPreferenceBinding
|
||||||
|
|
||||||
/** Accessibility settings for vibration. */
|
/** Accessibility settings for vibration. */
|
||||||
// LINT.IfChange
|
// LINT.IfChange
|
||||||
class VibrationMainSwitchPreference :
|
class VibrationMainSwitchPreference :
|
||||||
MainSwitchPreference(
|
BooleanValuePreference,
|
||||||
key = Settings.System.VIBRATE_ON,
|
MainSwitchPreferenceBinding,
|
||||||
title = R.string.accessibility_vibration_primary_switch_title,
|
|
||||||
),
|
|
||||||
PreferenceActionMetricsProvider,
|
PreferenceActionMetricsProvider,
|
||||||
PreferenceLifecycleProvider,
|
Preference.OnPreferenceChangeListener {
|
||||||
OnCheckedChangeListener {
|
|
||||||
|
override val key
|
||||||
|
get() = KEY
|
||||||
|
|
||||||
|
override val title
|
||||||
|
get() = R.string.accessibility_vibration_primary_switch_title
|
||||||
|
|
||||||
override val keywords: Int
|
override val keywords: Int
|
||||||
get() = R.string.keywords_accessibility_vibration_primary_switch
|
get() = R.string.keywords_accessibility_vibration_primary_switch
|
||||||
|
|
||||||
lateinit var vibrator: Vibrator
|
|
||||||
|
|
||||||
override val preferenceActionMetrics: Int
|
override val preferenceActionMetrics: Int
|
||||||
get() = ACTION_VIBRATION_HAPTICS
|
get() = ACTION_VIBRATION_HAPTICS
|
||||||
|
|
||||||
@@ -65,37 +66,26 @@ class VibrationMainSwitchPreference :
|
|||||||
|
|
||||||
override fun getWritePermissions(context: Context) = SettingsSystemStore.getWritePermissions()
|
override fun getWritePermissions(context: Context) = SettingsSystemStore.getWritePermissions()
|
||||||
|
|
||||||
override fun getWritePermit(
|
override fun getWritePermit(context: Context, callingPid: Int, callingUid: Int) =
|
||||||
context: Context,
|
ReadWritePermit.ALLOW
|
||||||
value: Boolean?,
|
|
||||||
callingPid: Int,
|
|
||||||
callingUid: Int,
|
|
||||||
) = ReadWritePermit.ALLOW
|
|
||||||
|
|
||||||
override val sensitivityLevel: Int
|
override val sensitivityLevel: Int
|
||||||
get() = SensitivityLevel.NO_SENSITIVITY
|
get() = SensitivityLevel.NO_SENSITIVITY
|
||||||
|
|
||||||
override fun onResume(context: PreferenceLifecycleContext) {
|
override fun bind(preference: Preference, metadata: PreferenceMetadata) {
|
||||||
vibrator = context.getSystemService(Vibrator::class.java)
|
super.bind(preference, metadata)
|
||||||
context
|
preference.onPreferenceChangeListener = this
|
||||||
.findPreference<com.android.settingslib.widget.MainSwitchPreference>(key)
|
|
||||||
?.addOnSwitchChangeListener(this)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onPause(context: PreferenceLifecycleContext) {
|
override fun onPreferenceChange(preference: Preference, newValue: Any): Boolean {
|
||||||
context
|
if (newValue == true) {
|
||||||
.findPreference<com.android.settingslib.widget.MainSwitchPreference>(key)
|
|
||||||
?.removeOnSwitchChangeListener(this)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCheckedChanged(button: CompoundButton, isChecked: Boolean) {
|
|
||||||
if (isChecked) {
|
|
||||||
// Play a haptic as preview for the main toggle only when touch feedback is enabled.
|
// Play a haptic as preview for the main toggle only when touch feedback is enabled.
|
||||||
VibrationPreferenceConfig.playVibrationPreview(
|
VibrationPreferenceConfig.playVibrationPreview(
|
||||||
vibrator,
|
preference.context.getSystemService(Vibrator::class.java),
|
||||||
VibrationAttributes.USAGE_TOUCH,
|
VibrationAttributes.USAGE_TOUCH,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Provides SettingsStore for vibration main switch with custom default value. */
|
/** Provides SettingsStore for vibration main switch with custom default value. */
|
||||||
@@ -117,6 +107,7 @@ class VibrationMainSwitchPreference :
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
const val KEY = Settings.System.VIBRATE_ON
|
||||||
const val DEFAULT_VALUE = true
|
const val DEFAULT_VALUE = true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user