Automotive Navigation Application

Managing settings

Request access

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.

import android.util.Log
import com.tomtom.automotive.integration.client.api.settings.SettingsManager
import com.tomtom.automotive.integration.client.api.settings.observesettings.ObserveSettingFailure
import com.tomtom.automotive.integration.client.api.settings.observesettings.ObserveSettingListener
import com.tomtom.automotive.integration.client.api.settings.observesettings.ObserveSettingParameters
import com.tomtom.automotive.integration.client.common.Callback
import com.tomtom.automotive.integration.client.common.Result
import 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.Log
import com.tomtom.automotive.integration.client.api.settings.SettingsManager
import com.tomtom.automotive.integration.client.api.settings.savesettings.SaveSettingCallback
import com.tomtom.automotive.integration.client.api.settings.savesettings.SaveSettingFailure
import com.tomtom.automotive.integration.client.api.settings.savesettings.SaveSettingParameters
import com.tomtom.automotive.integration.client.common.Callback
import 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 exist
  • WRONG_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 exist
  • READ_ONLY - The setting is defined as read-only and cannot be modified
  • WRONG_TYPE - The key references a setting of a different type