Change Localization Settings
The TomTom Digital Cockpit SDK is not available for general use.
Please contact us for more information.
Localization API overview
TomTom Digital Cockpit provides a comprehensive set of tools for changing the localization features of the in-vehicle system such as units of measurement and language. This allows for greater customisation and scalability across various regions, allowing the driver to interact with language and measurements which are familiar to them.
Currently the Localization API module platform_localization_api_common_settings
allows for the following in-app customisations:
- Language changing: package
com.tomtom.ivi.platform.localization.api.common.settings
- Time format changing: package
com.tomtom.ivi.platform.localization.api.common.settings
How to change the system language
Language changing API for switching the Android Locale at a system level.
The language change is called via the function setSystemLocale
by passing an Android Locale
object initialised with the desired language
and region
fields as illustrated below.
1import com.tomtom.ivi.platform.localization.api.common.settings.setSystemLocale23// Change the system locale to Spanish (language) US (region)4val spanishLocale = Locale("es", "US")5setSystemLocale(spanishLocale)67// Change the system locale to Italian (language)8val italianLocale = Locale("it")9setSystemLocale(italianLocale)
Because this API switches the whole system Locale, the change in localization is also reflected in third-party apps.
Note: Triggering a system locale change by calling this API will cause all activities to restart.
Setting system locale with invalid locale
The Android Locale does not
perform any validation of the language
or region
fields it is constructed with. It is possible
to construct an instance of a Locale
with an invalid language or region field not corresponding to
any language or country, such as follows:
val invalidLocale = Locale("invalidLanguage", "invalidRegion")setSystemLocale(invalidLocale)
In these instances it is worth noting that the typical behaviour of the Android system is to fallback to US English.
Setting system locale with same locale as current
If the user attempts to set a new Locale which is the same as the current one, the Android system will do nothing.
How to change the Distance Measurement System
TomTom Digital Cockpit provides an API for configuring the distance measurement system used by the platform. This API allows for easy switching between imperial and metric systems.
Setting the desired distance measurement system
To change the distance measurement system to the desired setting, call the function
LocalizationSettingsService.setActiveDistanceMeasurementSystem
, passing as
parameter the desired setting as a
LocalizationSettingsService.DistanceMeasurementSystem
enum value:
LocalizationSettingsService.DistanceMeasurementSystem.IMPERIAL
for the imperial system.LocalizationSettingsService.DistanceMeasurementSystem.METRIC
for the metric system.
1import com.tomtom.ivi.platform.localization.api.service.settings.LocalizationSettingsService23// Create an instance of service's client API.4private val localizationSettingsService =5 LocalizationSettingsService.createApi(this, frontendContext.iviServiceProvider)6...78// Change distance measurement system to Imperial.9localizationSettingsService.queueOrRun {10 it.setActiveDistanceMeasurementSystemAsync(IMPERIAL)11}1213// Change distance measurement system to Metric.14localizationSettingsService.queueOrRun {15 it.setActiveDistanceMeasurementSystemAsync(METRIC)16}
Retrieving the current setting
The current distance measurement system can be retrieved using the property
LocalizationSettingsService.activeDistanceMeasurementSystem
.
How to change the Temperature Display Units
TomTom Digital Cockpit provides an API for configuring the temperature display unit used by the platform. This API allows for easy switching between Celsius and Fahrenheit temperature display units.
Setting the desired format
To change the temperature display units to the desired setting, call the function
LocalizationSettingsService.setActiveTemperatureDisplayUnit
, passing as
parameter the desired setting as a
Temperature.Unit
enum value:
Temperature.Unit.CELSIUS
for the Celsius temperature display unit.Temperature.Unit.FAHRENHEIT
for the Fahrenheit temperature display unit.
1import com.tomtom.ivi.platform.localization.api.service.settings.LocalizationSettingsService2import com.tomtom.tools.android.api.quantity.Temperature34// Create an instance of service's client API.5private val localizationSettingsService =6 LocalizationSettingsService.createApi(this, frontendContext.iviServiceProvider)7...89// Change temperature display unit to Celsius.10localizationSettingsService.queueOrRun {11 it.setActiveTemperatureDisplayUnitAsync(Temperature.Unit.CELSIUS)12}1314// Change temperature display unit to Fahrenheit.15localizationSettingsService.queueOrRun {16 it.setActiveTemperatureDisplayUnitAsync(Temperature.Unit.FAHRENHEIT)17}
Retrieving the current setting
The current temperature display units can be retrieved using the property
LocalizationSettingsService.activeTemperatureDisplayUnit
.
How to change the clock time format
TomTom Digital Cockpit provides an API which allows for customization of the Android system clock time format. It supports setting the desired time format as well as retrieving the current setting.
Setting the desired format
To change the clock time format to the desired setting, call the function
setClockTimeFormat
passing as parameters the Context
instance and the desired setting as a
TimeFormat
enum value:
TimeFormat.CLOCK_12H
for a 12 hour format.TimeFormat.CLOCK_24H
for a 24 hour format.
It is also possible to call the API with the enum value TimeFormat.UNSET
.
In this case, the API will default to setting the 24-hour format.
1import com.tomtom.ivi.platform.localization.api.common.settings.setClockTimeFormat23// Change the clock format to 12 hours, e.g. 2:20pm4setClockTimeFormat(activityContext, TimeFormat.CLOCK_12H)56// Change the clock format to 24 hours, e.g. 14:207setClockTimeFormat(activityContext, TimeFormat.CLOCK_24H)
Retrieving the current setting
To retrieve the current system time format, call
getClockTimeFormat
and pass in the Context
instance. The API will return a
TimeFormat
enum representing the current system setting stored in
[Settings.System.TIME_12_24]
as either TimeFormat.CLOCK_24H
, TimeFormat.CLOCK_12H
or
TimeFormat.UNSET
in the case that no setting has yet been set with this API.