Managing settings
Request accessManaging settings
The SettingsManager provides access to user settings in the system. It allows you to observe and modify settings, see Available settings for a list of available settings. All settings are readable, but only settings marked as writable can be changed.
Observing settings
Subscribe to receive updates when a setting value changes. The SettingsManager provides type-specific observation methods: observeBooleanSetting, observeStringSetting, observeIntSetting, and observeFloatSetting.
import android.util.Logimport com.tomtom.automotive.integration.client.api.settings.SettingsManagerimport com.tomtom.automotive.integration.client.api.settings.observesettings.ObserveSettingFailureimport com.tomtom.automotive.integration.client.api.settings.observesettings.ObserveSettingListenerimport com.tomtom.automotive.integration.client.api.settings.observesettings.ObserveSettingParametersimport com.tomtom.automotive.integration.client.common.Callbackimport com.tomtom.automotive.integration.client.common.Resultimport com.tomtom.automotive.integration.client.common.SdkReleasable
private val TAG = "Settings"private var observeSettingReleasable: SdkReleasable? = null
fun observeStringSetting(settingsManager: SettingsManager, settingKey: String) { observeSettingReleasable = settingsManager.observeStringSetting( ObserveSettingParameters(settingKey), object : ObserveSettingListener<String?> { override fun onValueChanged(value: Result<String?, ObserveSettingFailure>) { when (value) { is Result.Success -> { val settingValue = value.value Log.d(TAG, "Setting '$settingKey' changed to: $settingValue") } is Result.Failure -> { when (value.failure) { ObserveSettingFailure.NOT_EXIST -> { Log.e(TAG, "Setting '$settingKey' does not exist") } ObserveSettingFailure.WRONG_TYPE -> { Log.e(TAG, "Setting '$settingKey' is not a string type") } } } } }
override fun onFunctionalityUnavailable(reason: Callback.Reason) { Log.e(TAG, "Settings unavailable: ${reason.devMessage}") } } )}
fun unObserveSetting() { observeSettingReleasable?.release() observeSettingReleasable = null}Saving settings
Modify writable settings using the type-specific save methods: saveBooleanSetting, saveStringSetting, saveIntSetting, and saveFloatSetting. Only settings marked as writable can be changed.
import android.util.Logimport com.tomtom.automotive.integration.client.api.settings.SettingsManagerimport com.tomtom.automotive.integration.client.api.settings.savesettings.SaveSettingCallbackimport com.tomtom.automotive.integration.client.api.settings.savesettings.SaveSettingFailureimport com.tomtom.automotive.integration.client.api.settings.savesettings.SaveSettingParametersimport com.tomtom.automotive.integration.client.common.Callbackimport com.tomtom.automotive.integration.client.common.Result
private val TAG = "Settings"
fun saveStringSetting(settingsManager: SettingsManager, settingKey: String, value: String) { settingsManager.saveStringSetting( SaveSettingParameters(settingKey, value), object : SaveSettingCallback { override fun onSaveCompleted(result: Result<Unit, SaveSettingFailure>) { when (result) { is Result.Success -> { Log.d(TAG, "Setting '$settingKey' saved to: $value") } is Result.Failure -> { when (result.failure) { SaveSettingFailure.NOT_EXIST -> { Log.e(TAG, "Setting '$settingKey' does not exist") } SaveSettingFailure.READ_ONLY -> { Log.e(TAG, "Setting '$settingKey' is read-only") } SaveSettingFailure.WRONG_TYPE -> { Log.e(TAG, "Setting '$settingKey' is not a string type") } } } } }
override fun onFunctionalityUnavailable(reason: Callback.Reason) { Log.e(TAG, "Settings unavailable: ${reason.devMessage}") } } )}Error handling
Observation failures
The ObserveSettingFailure enum describes possible failure reasons when observing settings:
NOT_EXIST- A setting with the given key doesn’t existWRONG_TYPE- The key references a setting of a different type
Save failures
The SaveSettingFailure enum describes possible failure reasons when saving settings:
NOT_EXIST- A setting with the given key doesn’t existREAD_ONLY- The setting is defined as read-only and cannot be modifiedWRONG_TYPE- The key references a setting of a different type