summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBilal Alsharifi <bilal.alsharifi@gmail.com>2020-06-04 11:37:18 -0400
committerBilal Alsharifi <bilal.alsharifi@gmail.com>2020-06-04 11:37:18 -0400
commit88b02528208efdc6c6e029bcc0c5441868506b9f (patch)
tree469fce0d1124ab18a2e1ae64c69720d7fd7866c6
parent54706b28b458a3ce38247ee6f64a9641460b1595 (diff)
parent11e694aa96ac5ad7f272447aef6c0293c3312413 (diff)
downloadsdl_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
-rwxr-xr-xandroid/hello_sdl_android/src/main/java/com/sdl/hellosdlandroid/SdlService.java34
-rw-r--r--android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/SdlManagerTests.java8
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManagerListener.java16
-rw-r--r--base/src/main/java/com/smartdevicelink/managers/BaseSdlManager.java73
-rw-r--r--hello_sdl_java/src/main/java/com/smartdevicelink/java/SdlService.java34
-rw-r--r--javaSE/src/main/java/com/smartdevicelink/managers/SdlManagerListener.java16
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);
}