Create OTA Service

To use OTA service features, OtaService needs to be initialized and a HomeAreaClient (or SubRegionAreaClient) instance needs to be created. The initialize() method will only need to be called once.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Thread otaInitializationThread = new Thread(new Runnable() {
        public void run() {
            try {
                SDKOptions sdkOptions = SDKOptions.builder()
                            .setApiKey("#API_KEY_PROVIDED_BY_TELENAV#")
                            .setApiSecret("#API_SECRET_PROVIDED_BY_TELENAV#")
                            .setCloudEndPoint("#CLOUD_ENDPOINT_PROVIDED_BY_TELENAV#")
                            .setSdkDataDir("#PATH_TO_LOCAL_DATA#")
                            .setSdkCacheDataDir("#PATH_TO_DOWNLOAD_OTA_DATA#")
                            .setUserId("#USER_ID#")
                            .setDeviceGuid("#DEVICE_ID#")
                            .setApplicationInfo(ApplicationInfo.builder("#APPLICATION_NAME#", "#APPLICATION_VERSION#").build())
                            .build();
                OtaServiceSettings settings = OtaServiceSettings.builder()
                            .setMaxSubRegionAreasCount(2)
                            .build();
                OtaService.initialize(MainActivity.this, sdkOptions, settings);
                HomeAreaClient homeClient = OtaService.getHomeAreaClient();
                SubRegionAreaClient subRegionClient = OtaService.getSubRegionAreaClient();
            } catch (OtaInvalidConfigException | OtaInitializationFailedException e) {
                // SDK init error, check your API key/secret, cloud endpoint and lib dependencies
            }
        }
    }
}, "otaInitializationThread");
otaInitializationThread.setDaemon(true);
otaInitializationThread.start();
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
val otaInitializationThread = Thread(
        Runnable {
            try {
                val sdkOptions = SDKOptions.builder()
                    .setApiKey("#API_KEY_PROVIDED_BY_TELENAV#")
                    .setApiSecret("#API_SECRET_PROVIDED_BY_TELENAV#")
                    .setCloudEndPoint("#CLOUD_ENDPOINT_PROVIDED_BY_TELENAV#")
                    .setSdkDataDir("#PATH_TO_LOCAL_DATA#")
                    .setSdkCacheDataDir("#PATH_TO_DOWNLOAD_OTA_DATA#")
                    .setUserId("#USER_ID#")
                    .setDeviceGuid("#DEVICE_ID#")
                    .setApplicationInfo(ApplicationInfo.builder("#APPLICATION_NAME#", "#APPLICATION_VERSION#").build())
                    .build()
                val settings = OtaServiceSettings.builder().setMaxSubRegionAreasCount(2).build()
                OtaService.initialize(MainActivity.this, sdkOptions, settings)
                val homeClient: HomeAreaClient = OtaService.getHomeAreaClient()
                val subRegionClient: SubRegionAreaClient = OtaService.getSubRegionAreaClient()
            } catch (e: OtaException) {
                // SDK init error, check your API key/secret, cloud endpoint and lib dependencies
            }
        }
    )
otaInitializationThread.isDaemon = true
otaInitializationThread.start()


The SDK is now ready to use!

Warning

Since version 1.4.10.+, the method 'OtaService.initialize' can only run in a worker thread. Invoking it from the main thread leads to throwing an OtaInitializationFailedException.

Warning

The fields ApiKey, ApiSecret, CloudEndPoint, SdkDataDir, SdkCacheDataDir, UserId, DeviceGuid, ApplicationInfo of SDKOptions must be filled because they are mandatory for ota client functionality.