diff options
author | Bilal Alsharifi <bilal.alsharifi@gmail.com> | 2020-06-04 11:37:18 -0400 |
---|---|---|
committer | Bilal Alsharifi <bilal.alsharifi@gmail.com> | 2020-06-04 11:37:18 -0400 |
commit | 88b02528208efdc6c6e029bcc0c5441868506b9f (patch) | |
tree | 469fce0d1124ab18a2e1ae64c69720d7fd7866c6 | |
parent | 54706b28b458a3ce38247ee6f64a9641460b1595 (diff) | |
parent | 11e694aa96ac5ad7f272447aef6c0293c3312413 (diff) | |
download | sdl_android-88b02528208efdc6c6e029bcc0c5441868506b9f.tar.gz |
Merge branch 'develop' into feature/android_lcm
# Conflicts:
# android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManager.java
# base/src/main/java/com/smartdevicelink/managers/BaseSdlManager.java
# javaSE/src/main/java/com/smartdevicelink/managers/SdlManager.java
6 files changed, 169 insertions, 12 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..ec8afa812 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,44 @@ public class SdlService extends Service { } @Override - public LifecycleConfigurationUpdate managerShouldUpdateLifecycle(Language language){ - String appName; + public LifecycleConfigurationUpdate managerShouldUpdateLifecycle(Language language) { + return null; + } + + @Override + 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 63917067e..589af4c52 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 @@ -110,7 +110,12 @@ public class SdlManagerTests extends AndroidTestCase2 { } @Override - public LifecycleConfigurationUpdate managerShouldUpdateLifecycle(Language language){ + public LifecycleConfigurationUpdate managerShouldUpdateLifecycle(Language language) { + return null; + } + + @Override + public LifecycleConfigurationUpdate managerShouldUpdateLifecycle(Language language, Language hmiLanguage) { return null; } }; @@ -166,6 +171,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/SdlManagerListener.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManagerListener.java index d27ac27b5..aa0e4f84a 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 @@ -64,6 +64,22 @@ public interface SdlManagerListener extends BaseSdlManagerListener{ * @param language The language 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. + * @deprecated use {@link #managerShouldUpdateLifecycle(Language language, Language hmiLanguage)} instead */ + @Deprecated LifecycleConfigurationUpdate managerShouldUpdateLifecycle(Language language); + + /** + * Called when the SDL manager detected a language mismatch. In case of a language mismatch the + * manager should change the apps registration by updating the lifecycle configuration to the + * specified language. If the app can support the specified language it should return an Object + * of LifecycleConfigurationUpdate, otherwise it should return null to indicate that the language + * is not supported. + * + * @param language The VR+TTS language of the connected head unit the manager is trying to update the configuration. + * @param hmiLanguage The HMI display language 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, 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 c09c0560c..6f716a7dd 100644 --- a/base/src/main/java/com/smartdevicelink/managers/BaseSdlManager.java +++ b/base/src/main/java/com/smartdevicelink/managers/BaseSdlManager.java @@ -86,6 +86,7 @@ abstract class BaseSdlManager { String appId, appName, shortAppName; boolean isMediaApp; Language hmiLanguage; + Language language; Vector<AppHMIType> hmiTypes; BaseTransportConfig transport; Vector<String> vrSynonyms; @@ -171,7 +172,73 @@ abstract class BaseSdlManager { abstract void initialize(); public abstract void dispose(); - protected void checkLifecycleConfiguration() { + + protected void checkLifecycleConfiguration(){ + final Language actualLanguage = this.getRegisterAppInterfaceResponse().getLanguage(); + final Language actualHMILanguage = this.getRegisterAppInterfaceResponse().getHmiDisplayLanguage(); + + if ((actualLanguage != null && !actualLanguage.equals(language)) || (actualHMILanguage != null && !actualHMILanguage.equals(hmiLanguage))) { + + LifecycleConfigurationUpdate lcuNew = managerListener.managerShouldUpdateLifecycle(actualLanguage, actualHMILanguage); + LifecycleConfigurationUpdate lcuOld = managerListener.managerShouldUpdateLifecycle(actualLanguage); + final LifecycleConfigurationUpdate lcu; + ChangeRegistration changeRegistration; + if (lcuNew == null) { + lcu = lcuOld; + changeRegistration = new ChangeRegistration(actualLanguage, actualLanguage); + } else { + lcu = lcuNew; + changeRegistration = new ChangeRegistration(actualLanguage, actualHMILanguage); + } + + if (lcu != null) { + changeRegistration.setAppName(lcu.getAppName()); + changeRegistration.setNgnMediaScreenAppName(lcu.getShortAppName()); + changeRegistration.setTtsName(lcu.getTtsName()); + changeRegistration.setVrSynonyms(lcu.getVoiceRecognitionCommandNames()); + changeRegistration.setOnRPCResponseListener(new OnRPCResponseListener() { + @Override + public void onResponse(int correlationId, RPCResponse response) { + if (response.getSuccess()){ + // go through and change sdlManager properties that were changed via the LCU update + hmiLanguage = actualHMILanguage; + language = actualLanguage; + + if (lcu.getAppName() != null) { + appName = lcu.getAppName(); + } + + if (lcu.getShortAppName() != null) { + shortAppName = lcu.getShortAppName(); + } + + if (lcu.getTtsName() != null) { + ttsChunks = lcu.getTtsName(); + } + + if (lcu.getVoiceRecognitionCommandNames() != null) { + vrSynonyms = lcu.getVoiceRecognitionCommandNames(); + } + } + try { + DebugTool.logInfo(response.serializeJSON().toString()); + } catch (JSONException e) { + e.printStackTrace(); + } + } + + @Override + public void onError(int correlationId, Result resultCode, String info) { + DebugTool.logError("Change Registration onError: " + resultCode + " | Info: " + info); + retryChangeRegistration(); + } + }); + this.sendRPC(changeRegistration); + } + } + } + + protected void checkLifecycleConfiguration2() { final Language actualLanguage = lifecycleManager.getRegisterAppInterfaceResponse().getLanguage(); if (actualLanguage != null && !actualLanguage.equals(hmiLanguage)) { @@ -366,6 +433,8 @@ abstract class BaseSdlManager { protected Language getHmiLanguage() { return hmiLanguage; } + protected Language getLanguage() { return language; } + protected TemplateColorScheme getDayColorScheme() { return dayColorScheme; } protected TemplateColorScheme getNightColorScheme() { return nightColorScheme; } @@ -618,6 +687,7 @@ abstract class BaseSdlManager { */ public Builder setLanguage(final Language hmiLanguage){ sdlManager.hmiLanguage = hmiLanguage; + sdlManager.language = hmiLanguage; return this; } @@ -775,6 +845,7 @@ abstract class BaseSdlManager { if (sdlManager.hmiLanguage == null){ sdlManager.hmiLanguage = Language.EN_US; + sdlManager.language = Language.EN_US; } if (sdlManager.minimumProtocolVersion == null){ diff --git a/hello_sdl_java/src/main/java/com/smartdevicelink/java/SdlService.java b/hello_sdl_java/src/main/java/com/smartdevicelink/java/SdlService.java index 2bc02fa2f..d4611e8b3 100644 --- a/hello_sdl_java/src/main/java/com/smartdevicelink/java/SdlService.java +++ b/hello_sdl_java/src/main/java/com/smartdevicelink/java/SdlService.java @@ -138,20 +138,44 @@ public class SdlService { } @Override - public LifecycleConfigurationUpdate managerShouldUpdateLifecycle(Language language){ - String appName; + public LifecycleConfigurationUpdate managerShouldUpdateLifecycle(Language language) { + return null; + } + + @Override + 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/javaSE/src/main/java/com/smartdevicelink/managers/SdlManagerListener.java b/javaSE/src/main/java/com/smartdevicelink/managers/SdlManagerListener.java index 44d1e091a..8118a9c93 100644 --- a/javaSE/src/main/java/com/smartdevicelink/managers/SdlManagerListener.java +++ b/javaSE/src/main/java/com/smartdevicelink/managers/SdlManagerListener.java @@ -63,6 +63,22 @@ public interface SdlManagerListener extends BaseSdlManagerListener { * @param language The language 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. + * @deprecated use {@link #managerShouldUpdateLifecycle(Language language, Language hmiLanguage)} instead */ + @Deprecated LifecycleConfigurationUpdate managerShouldUpdateLifecycle(Language language); + + /** + * Called when the SDL manager detected a language mismatch. In case of a language mismatch the + * manager should change the apps registration by updating the lifecycle configuration to the + * specified language. If the app can support the specified language it should return an Object + * of LifecycleConfigurationUpdate, otherwise it should return null to indicate that the language + * is not supported. + * + * @param language The VR+TTS language of the connected head unit the manager is trying to update the configuration. + * @param hmiLanguage The HMI display language 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, Language hmiLanguage); } |