diff options
5 files changed, 58 insertions, 14 deletions
diff --git a/android/hello_sdl_android/src/main/java/com/sdl/hellosdlandroid/SdlService.java b/android/hello_sdl_android/src/main/java/com/sdl/hellosdlandroid/SdlService.java index 6b7e77c69..858c3ad12 100755 --- a/android/hello_sdl_android/src/main/java/com/sdl/hellosdlandroid/SdlService.java +++ b/android/hello_sdl_android/src/main/java/com/sdl/hellosdlandroid/SdlService.java @@ -198,20 +198,40 @@ public class SdlService extends Service { } @Override - public LifecycleConfigurationUpdate managerShouldUpdateLifecycle(Language language){ - String appName; + public LifecycleConfigurationUpdate managerShouldUpdateLifecycle(Language language, Language hmiLanguage){ + boolean isNeedUpdate = false; + String appName = APP_NAME; + String ttsName = APP_NAME; switch (language) { case ES_MX: + isNeedUpdate = true; + ttsName = APP_NAME_ES; + break; + case FR_CA: + isNeedUpdate = true; + ttsName = APP_NAME_FR; + break; + default: + break; + } + switch (hmiLanguage) { + case ES_MX: + isNeedUpdate = true; appName = APP_NAME_ES; break; case FR_CA: + isNeedUpdate = true; appName = APP_NAME_FR; break; default: - return null; + break; + } + if (isNeedUpdate) { + return new LifecycleConfigurationUpdate(appName,null,TTSChunkFactory.createSimpleTTSChunks(ttsName), null); + } else { + return null; } - return new LifecycleConfigurationUpdate(appName,null,TTSChunkFactory.createSimpleTTSChunks(appName), null); } }; diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/SdlManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/SdlManagerTests.java index 5c6656bf9..ec11b86a7 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/SdlManagerTests.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/SdlManagerTests.java @@ -107,7 +107,7 @@ public class SdlManagerTests extends AndroidTestCase2 { } @Override - public LifecycleConfigurationUpdate managerShouldUpdateLifecycle(Language language){ + public LifecycleConfigurationUpdate managerShouldUpdateLifecycle(Language language, Language hmiLanguage){ return null; } }; @@ -118,6 +118,7 @@ public class SdlManagerTests extends AndroidTestCase2 { builder.setAppTypes(appType); builder.setTransportType(transport); builder.setLanguage(Language.EN_US); + builder.setHMILanguage(Language.EN_US); builder.setDayColorScheme(templateColorScheme); builder.setNightColorScheme(templateColorScheme); builder.setVrSynonyms(Test.GENERAL_VECTOR_STRING); @@ -162,6 +163,7 @@ public class SdlManagerTests extends AndroidTestCase2 { assertEquals("heyApp", sdlManager.getShortAppName()); assertEquals(appType, sdlManager.getAppTypes()); assertEquals(Language.EN_US, sdlManager.getHmiLanguage()); + assertEquals(Language.EN_US, sdlManager.getLanguage()); assertEquals(transport, sdlManager.getTransport()); assertEquals(templateColorScheme, sdlManager.getDayColorScheme()); assertEquals(templateColorScheme, sdlManager.getNightColorScheme()); diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManager.java index 41202fab6..6e6592e27 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManager.java @@ -242,13 +242,14 @@ public class SdlManager extends BaseSdlManager{ @Override protected void checkLifecycleConfiguration(){ final Language actualLanguage = this.getRegisterAppInterfaceResponse().getLanguage(); + final Language actualHMILanguage = this.getRegisterAppInterfaceResponse().getHmiDisplayLanguage(); - if (actualLanguage != null && !actualLanguage.equals(hmiLanguage)) { + if ((actualLanguage != null && !actualLanguage.equals(language)) || (actualHMILanguage != null && !actualHMILanguage.equals(hmiLanguage))) { - final LifecycleConfigurationUpdate lcu = managerListener.managerShouldUpdateLifecycle(actualLanguage); + final LifecycleConfigurationUpdate lcu = managerListener.managerShouldUpdateLifecycle(actualLanguage, actualHMILanguage); if (lcu != null) { - ChangeRegistration changeRegistration = new ChangeRegistration(actualLanguage, actualLanguage); + ChangeRegistration changeRegistration = new ChangeRegistration(actualLanguage, actualHMILanguage); changeRegistration.setAppName(lcu.getAppName()); changeRegistration.setNgnMediaScreenAppName(lcu.getShortAppName()); changeRegistration.setTtsName(lcu.getTtsName()); @@ -258,7 +259,8 @@ public class SdlManager extends BaseSdlManager{ public void onResponse(int correlationId, RPCResponse response) { if (response.getSuccess()){ // go through and change sdlManager properties that were changed via the LCU update - hmiLanguage = actualLanguage; + hmiLanguage = actualHMILanguage; + language = actualLanguage; if (lcu.getAppName() != null) { appName = lcu.getAppName(); @@ -675,7 +677,7 @@ public class SdlManager extends BaseSdlManager{ } } - proxy = new SdlProxyBase(proxyBridge, context, appName, shortAppName, isMediaApp, hmiLanguage, + proxy = new SdlProxyBase(proxyBridge, context, appName, shortAppName, isMediaApp, language, hmiLanguage, hmiTypes, appId, transport, vrSynonyms, ttsChunks, dayColorScheme, nightColorScheme) {}; proxy.setMinimumProtocolVersion(minimumProtocolVersion); @@ -999,10 +1001,19 @@ public class SdlManager extends BaseSdlManager{ } /** - * Sets the Language of the App + * Sets the VR+TTS Language of the App + * @param language the desired language to be used on the VR+TTS of the connected module + */ + public Builder setLanguage(final Language language){ + sdlManager.language = language; + return this; + } + + /** + * Sets the display/HMI Language of the App * @param hmiLanguage the desired language to be used on the display/HMI of the connected module */ - public Builder setLanguage(final Language hmiLanguage){ + public Builder setHMILanguage(final Language hmiLanguage){ sdlManager.hmiLanguage = hmiLanguage; return this; } @@ -1181,8 +1192,15 @@ public class SdlManager extends BaseSdlManager{ sdlManager.lockScreenConfig = new LockScreenConfig(); } - if (sdlManager.hmiLanguage == null){ + if (sdlManager.hmiLanguage == null && sdlManager.language == null){ sdlManager.hmiLanguage = Language.EN_US; + sdlManager.language = Language.EN_US; + } else if (sdlManager.hmiLanguage == null && sdlManager.language != null) { + sdlManager.hmiLanguage = sdlManager.language; + } else if (sdlManager.hmiLanguage != null && sdlManager.language == null) { + sdlManager.language = sdlManager.hmiLanguage; + } else { + // do nothing when language and hmiLanguage are set } if (sdlManager.minimumProtocolVersion == null){ diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManagerListener.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManagerListener.java index d27ac27b5..96d13abab 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManagerListener.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManagerListener.java @@ -62,8 +62,9 @@ public interface SdlManagerListener extends BaseSdlManagerListener{ * is not supported. * * @param language The language of the connected head unit the manager is trying to update the configuration. + * @param hmiLanguage The hmiLanguage of the connected head unit the manager is trying to update the configuration. * @return An object of LifecycleConfigurationUpdate if the head unit language is supported, * otherwise null to indicate that the language is not supported. */ - LifecycleConfigurationUpdate managerShouldUpdateLifecycle(Language language); + LifecycleConfigurationUpdate managerShouldUpdateLifecycle(Language language, Language hmiLanguage); } diff --git a/base/src/main/java/com/smartdevicelink/managers/BaseSdlManager.java b/base/src/main/java/com/smartdevicelink/managers/BaseSdlManager.java index 73a9c3dfd..f04a41205 100644 --- a/base/src/main/java/com/smartdevicelink/managers/BaseSdlManager.java +++ b/base/src/main/java/com/smartdevicelink/managers/BaseSdlManager.java @@ -68,6 +68,7 @@ abstract class BaseSdlManager { String appId, appName, shortAppName; boolean isMediaApp; Language hmiLanguage; + Language language; Vector<AppHMIType> hmiTypes; BaseTransportConfig transport; Vector<String> vrSynonyms; @@ -93,6 +94,8 @@ abstract class BaseSdlManager { protected Language getHmiLanguage() { return hmiLanguage; } + protected Language getLanguage() { return language; } + protected TemplateColorScheme getDayColorScheme() { return dayColorScheme; } protected TemplateColorScheme getNightColorScheme() { return nightColorScheme; } |