Managing settings
Managing 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.
1import android.util.Log2import com.tomtom.automotive.integration.client.api.settings.SettingsManager3import com.tomtom.automotive.integration.client.api.settings.observesettings.ObserveSettingFailure4import com.tomtom.automotive.integration.client.api.settings.observesettings.ObserveSettingListener5import com.tomtom.automotive.integration.client.api.settings.observesettings.ObserveSettingParameters6import com.tomtom.automotive.integration.client.common.Callback7import com.tomtom.automotive.integration.client.common.Result8import com.tomtom.automotive.integration.client.common.SdkReleasable910private val TAG = "Settings"11private var observeSettingReleasable: SdkReleasable? = null1213fun observeStringSetting(settingsManager: SettingsManager, settingKey: String) {14 observeSettingReleasable = settingsManager.observeStringSetting(15 ObserveSettingParameters(settingKey),16 object : ObserveSettingListener<String?> {17 override fun onValueChanged(value: Result<String?, ObserveSettingFailure>) {18 when (value) {19 is Result.Success -> {20 val settingValue = value.value21 Log.d(TAG, "Setting '$settingKey' changed to: $settingValue")22 }23 is Result.Failure -> {24 when (value.failure) {25 ObserveSettingFailure.NOT_EXIST -> {26 Log.e(TAG, "Setting '$settingKey' does not exist")27 }28 ObserveSettingFailure.WRONG_TYPE -> {29 Log.e(TAG, "Setting '$settingKey' is not a string type")30 }31 }32 }33 }34 }3536 override fun onFunctionalityUnavailable(reason: Callback.Reason) {37 Log.e(TAG, "Settings unavailable: ${reason.devMessage}")38 }39 }40 )41}4243fun unObserveSetting() {44 observeSettingReleasable?.release()45 observeSettingReleasable = null46}
Saving settings
Modify writable settings using the type-specific save methods: saveBooleanSetting, saveStringSetting, saveIntSetting, and saveFloatSetting. Only settings marked as writable can be changed.
1import android.util.Log2import com.tomtom.automotive.integration.client.api.settings.SettingsManager3import com.tomtom.automotive.integration.client.api.settings.savesettings.SaveSettingCallback4import com.tomtom.automotive.integration.client.api.settings.savesettings.SaveSettingFailure5import com.tomtom.automotive.integration.client.api.settings.savesettings.SaveSettingParameters6import com.tomtom.automotive.integration.client.common.Callback7import com.tomtom.automotive.integration.client.common.Result89private val TAG = "Settings"1011fun saveStringSetting(settingsManager: SettingsManager, settingKey: String, value: String) {12 settingsManager.saveStringSetting(13 SaveSettingParameters(settingKey, value),14 object : SaveSettingCallback {15 override fun onSaveCompleted(result: Result<Unit, SaveSettingFailure>) {16 when (result) {17 is Result.Success -> {18 Log.d(TAG, "Setting '$settingKey' saved to: $value")19 }20 is Result.Failure -> {21 when (result.failure) {22 SaveSettingFailure.NOT_EXIST -> {23 Log.e(TAG, "Setting '$settingKey' does not exist")24 }25 SaveSettingFailure.READ_ONLY -> {26 Log.e(TAG, "Setting '$settingKey' is read-only")27 }28 SaveSettingFailure.WRONG_TYPE -> {29 Log.e(TAG, "Setting '$settingKey' is not a string type")30 }31 }32 }33 }34 }3536 override fun onFunctionalityUnavailable(reason: Callback.Reason) {37 Log.e(TAG, "Settings unavailable: ${reason.devMessage}")38 }39 }40 )41}
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