diff options
author | BrettyWhite <geekman3454@protonmail.com> | 2019-05-09 15:05:08 -0400 |
---|---|---|
committer | BrettyWhite <geekman3454@protonmail.com> | 2019-05-09 15:05:08 -0400 |
commit | 424133c7e2582ca813914446c0dbc2d3e8b9d1bd (patch) | |
tree | 888e684adc5d212f93f55f7f29d6047c802d0cf2 | |
parent | 4002fde89c275d74f98c9e18ffc4616e2083ff1d (diff) | |
download | sdl_android-424133c7e2582ca813914446c0dbc2d3e8b9d1bd.tar.gz |
update per comments
8 files changed, 109 insertions, 56 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 b180c851b..030c3b3d0 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 @@ -15,24 +15,28 @@ import com.smartdevicelink.managers.CompletionListener; import com.smartdevicelink.managers.SdlManager; import com.smartdevicelink.managers.SdlManagerListener; import com.smartdevicelink.managers.file.filetypes.SdlArtwork; +import com.smartdevicelink.managers.screen.menu.MenuCell; +import com.smartdevicelink.managers.screen.menu.MenuSelectionListener; +import com.smartdevicelink.managers.screen.menu.VoiceCommand; +import com.smartdevicelink.managers.screen.menu.VoiceCommandSelectionListener; import com.smartdevicelink.protocol.enums.FunctionID; import com.smartdevicelink.proxy.RPCNotification; import com.smartdevicelink.proxy.TTSChunkFactory; -import com.smartdevicelink.proxy.rpc.AddCommand; -import com.smartdevicelink.proxy.rpc.MenuParams; -import com.smartdevicelink.proxy.rpc.OnCommand; import com.smartdevicelink.proxy.rpc.OnHMIStatus; import com.smartdevicelink.proxy.rpc.Speak; import com.smartdevicelink.proxy.rpc.enums.AppHMIType; import com.smartdevicelink.proxy.rpc.enums.FileType; import com.smartdevicelink.proxy.rpc.enums.HMILevel; +import com.smartdevicelink.proxy.rpc.enums.TriggerSource; import com.smartdevicelink.proxy.rpc.listeners.OnRPCNotificationListener; import com.smartdevicelink.transport.BaseTransportConfig; import com.smartdevicelink.transport.MultiplexTransportConfig; import com.smartdevicelink.transport.TCPTransportConfig; import com.smartdevicelink.util.DebugTool; +import java.util.Arrays; import java.util.Collections; +import java.util.List; import java.util.Vector; public class SdlService extends Service { @@ -49,7 +53,6 @@ public class SdlService extends Service { private static final String WELCOME_SPEAK = "Welcome to Hello S D L"; private static final String TEST_COMMAND_NAME = "Test Command"; - private static final int TEST_COMMAND_ID = 1; private static final int FOREGROUND_SERVICE_ID = 111; @@ -159,28 +162,13 @@ public class SdlService extends Service { public void onNotified(RPCNotification notification) { OnHMIStatus status = (OnHMIStatus) notification; if (status.getHmiLevel() == HMILevel.HMI_FULL && ((OnHMIStatus) notification).getFirstRun()) { - sendCommands(); + setVoiceCommands(); + sendMenus(); performWelcomeSpeak(); performWelcomeShow(); } } }); - - // Menu Selected Listener - sdlManager.addOnRPCNotificationListener(FunctionID.ON_COMMAND, new OnRPCNotificationListener() { - @Override - public void onNotified(RPCNotification notification) { - OnCommand command = (OnCommand) notification; - Integer id = command.getCmdID(); - if(id != null){ - switch(id){ - case TEST_COMMAND_ID: - showTest(); - break; - } - } - } - }); } @Override @@ -207,16 +195,85 @@ public class SdlService extends Service { } /** - * Add commands for the app on SDL. + * Send some voice commands */ - private void sendCommands(){ - AddCommand command = new AddCommand(); - MenuParams params = new MenuParams(); - params.setMenuName(TEST_COMMAND_NAME); - command.setCmdID(TEST_COMMAND_ID); - command.setMenuParams(params); - command.setVrCommands(Collections.singletonList(TEST_COMMAND_NAME)); - sdlManager.sendRPC(command); + private void setVoiceCommands(){ + + List<String> list1 = Arrays.asList("Command One"); + List<String> list2 = Arrays.asList("Command two"); + + VoiceCommand voiceCommand1 = new VoiceCommand(list1, new VoiceCommandSelectionListener() { + @Override + public void onVoiceCommandSelected() { + Log.i(TAG, "Voice Command 1 triggered"); + } + }); + + VoiceCommand voiceCommand2 = new VoiceCommand(list2, new VoiceCommandSelectionListener() { + @Override + public void onVoiceCommandSelected() { + Log.i(TAG, "Voice Command 2 triggered"); + } + }); + + sdlManager.getScreenManager().setVoiceCommands(Arrays.asList(voiceCommand1,voiceCommand2)); + } + + /** + * Add menus for the app on SDL. + */ + private void sendMenus(){ + + // some arts + SdlArtwork livio = new SdlArtwork("livio", FileType.GRAPHIC_PNG, R.drawable.sdl, false); + + // some voice commands + List<String> voice2 = Arrays.asList("Cell two"); + + MenuCell mainCell1 = new MenuCell("Test Cell 1", livio, null, new MenuSelectionListener() { + @Override + public void onTriggered(TriggerSource trigger) { + Log.i(TAG, "Test cell 1 triggered. Source: "+ trigger.toString()); + } + }); + + MenuCell mainCell2 = new MenuCell("Test Cell 2", null, voice2, new MenuSelectionListener() { + @Override + public void onTriggered(TriggerSource trigger) { + Log.i(TAG, "Test cell 2 triggered. Source: "+ trigger.toString()); + } + }); + + MenuCell mainCell3 = new MenuCell("Clear the menu",null, null, new MenuSelectionListener() { + @Override + public void onTriggered(TriggerSource trigger) { + Log.i(TAG, "Clearing Menu. Source: "+ trigger.toString()); + // Clear this thing + sdlManager.getScreenManager().setMenu(Collections.<MenuCell>emptyList()); + } + }); + + // SUB MENU + + MenuCell subCell1 = new MenuCell("SubCell 1",null, null, new MenuSelectionListener() { + @Override + public void onTriggered(TriggerSource trigger) { + Log.i(TAG, "Sub cell 1 triggered. Source: "+ trigger.toString()); + } + }); + + MenuCell subCell2 = new MenuCell("SubCell 2",null, null, new MenuSelectionListener() { + @Override + public void onTriggered(TriggerSource trigger) { + Log.i(TAG, "Sub cell 2 triggered. Source: "+ trigger.toString()); + } + }); + + // sub menu parent cell + MenuCell mainCell4 = new MenuCell("Test Cell 4", livio, Arrays.asList(subCell1,subCell2)); + + // Send the entire menu off to be created + sdlManager.getScreenManager().setMenu(Arrays.asList(mainCell1, mainCell2, mainCell3, mainCell4)); } /** diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuManagerTests.java index b94a9bf98..dc51aed9e 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuManagerTests.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/MenuManagerTests.java @@ -110,10 +110,10 @@ public class MenuManagerTests extends AndroidTestCase2 { assertEquals(menuManager.getState(), BaseSubManager.SETTING_UP); assertEquals(menuManager.currentSystemContext, SystemContext.SYSCTXT_MAIN); assertEquals(menuManager.lastMenuId, 1); - assertNotNull(menuManager.menuCells); - assertNotNull(menuManager.waitingUpdateMenuCells); - assertNotNull(menuManager.oldMenuCells); - assertNotNull(menuManager.inProgressUpdate); + assertNull(menuManager.menuCells); + assertNull(menuManager.waitingUpdateMenuCells); + assertNull(menuManager.oldMenuCells); + assertNull(menuManager.inProgressUpdate); assertNotNull(menuManager.hmiListener); assertNotNull(menuManager.commandListener); assertNotNull(menuManager.displayListener); @@ -160,7 +160,6 @@ public class MenuManagerTests extends AndroidTestCase2 { // updating voice commands before HMI is ready assertTrue(menuManager.waitingOnHMIUpdate); // these are the 2 commands we have waiting - assertEquals(menuManager.menuCells.size(), 0); assertEquals(menuManager.waitingUpdateMenuCells.size(), 4); assertEquals(menuManager.currentHMILevel, HMILevel.HMI_NONE); // The Menu Manager should send new menu once HMI full occurs @@ -173,13 +172,12 @@ public class MenuManagerTests extends AndroidTestCase2 { public void testUpdating(){ - assertEquals(menuManager.oldMenuCells.size(), 0); // these were deleted with the previous series of deletions assertEquals(menuManager.deleteCommandsForCells(cells).size(), 4); // 3 root cells and 1 sub menu // when we only send one command to update, we should only be returned one add command List<MenuCell> newArray = Arrays.asList(mainCell1, mainCell4); assertEquals(menuManager.allCommandsForCells(newArray, false).size(), 4); // 1 root cells, 1 sub menu root cell, 2 sub menu cells - + menuManager.currentHMILevel = HMILevel.HMI_FULL; menuManager.setMenuCells(newArray); // Unlike voice commands, the Menu Manager dynamically assigns Cell ID's. Because of this, we need to get the updated @@ -189,7 +187,7 @@ public class MenuManagerTests extends AndroidTestCase2 { for (MenuCell cell : updatedCells){ // grab 2 of our newly updated cells - 1 root and 1 sub cell, and make sure they can get triggered - if (cell.getDescription().equalsIgnoreCase("Test Cell 1")){ + if (cell.getTitle().equalsIgnoreCase("Test Cell 1")){ // Fake onCommand - we want to make sure that we can pass back onCommand events to our root Menu Cell OnCommand onCommand = new OnCommand(); onCommand.setCmdID(cell.getCellId()); @@ -200,7 +198,7 @@ public class MenuManagerTests extends AndroidTestCase2 { verify(cell.getMenuSelectionListener(), times(1)).onTriggered(TriggerSource.TS_MENU); } - if (cell.getDescription().equalsIgnoreCase("SubCell 2")){ + if (cell.getTitle().equalsIgnoreCase("SubCell 2")){ // Fake onCommand - we want to make sure that we can pass back onCommand events to our sub Menu Cell OnCommand onCommand2 = new OnCommand(); onCommand2.setCmdID(cell.getCellId()); @@ -230,11 +228,11 @@ public class MenuManagerTests extends AndroidTestCase2 { mainCell1 = new MenuCell("Test Cell 1", livio, null, menuSelectionListener1); MenuCell mainCell2 = new MenuCell("Test Cell 2", livio, voice2, menuSelectionListener2); - MenuCell mainCell3 = new MenuCell("Test Cell 3", menuSelectionListener3); + MenuCell mainCell3 = new MenuCell("Test Cell 3",null, null, menuSelectionListener3); // SUB MENU - MenuCell subCell1 = new MenuCell("SubCell 1", menuSelectionListenerSub1); - MenuCell subCell2 = new MenuCell("SubCell 2", menuSelectionListenerSub2); + MenuCell subCell1 = new MenuCell("SubCell 1",null, null, menuSelectionListenerSub1); + MenuCell subCell2 = new MenuCell("SubCell 2",null, null, menuSelectionListenerSub2); mainCell4 = new MenuCell("Test Cell 4", livio, Arrays.asList(subCell1,subCell2)); // sub menu parent cell diff --git a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManagerTests.java b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManagerTests.java index db662c31f..2b07fcfbf 100644 --- a/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManagerTests.java +++ b/android/sdl_android/src/androidTest/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManagerTests.java @@ -112,8 +112,8 @@ public class VoiceCommandManagerTests extends AndroidTestCase2 { assertFalse(voiceCommandManager.waitingOnHMIUpdate); assertNotNull(voiceCommandManager.commandListener); assertNotNull(voiceCommandManager.hmiListener); - assertNotNull(voiceCommandManager.voiceCommands); - assertNotNull(voiceCommandManager.oldVoiceCommands); + assertNull(voiceCommandManager.voiceCommands); + assertNull(voiceCommandManager.oldVoiceCommands); assertNull(voiceCommandManager.inProgressUpdate); } @@ -171,8 +171,6 @@ public class VoiceCommandManagerTests extends AndroidTestCase2 { // we have previously sent 2 VoiceCommand objects. we will now update it and have just one - // This should have been cleared, but still initialized after the last send - assertEquals(voiceCommandManager.oldVoiceCommands.size(), 0); // make sure the system returns us 2 delete commands assertEquals(voiceCommandManager.deleteCommandsForVoiceCommands(commands).size(), 2); // when we only send one command to update, we should only be returned one add command diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/MenuManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/MenuManager.java index c244d0d39..4a28a2792 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/MenuManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/MenuManager.java @@ -42,9 +42,9 @@ import com.smartdevicelink.proxy.interfaces.ISdl; * * The MenuManager takes MenuCell objects and creates and sends all necessary RPCs to build out a menu */ -class MenuManager extends BaseMenuManager { +public class MenuManager extends BaseMenuManager { - MenuManager(ISdl internalInterface, FileManager fileManager) { + public MenuManager(ISdl internalInterface, FileManager fileManager) { // setup super(internalInterface, fileManager); } diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManager.java index a5492a384..a892d3a2c 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManager.java @@ -41,9 +41,9 @@ import com.smartdevicelink.proxy.interfaces.ISdl; * * The VoiceCommandManager takes a List of VoiceCommand objects and sets them on the Head unit for you. */ -class VoiceCommandManager extends BaseVoiceCommandManager { +public class VoiceCommandManager extends BaseVoiceCommandManager { - VoiceCommandManager(ISdl internalInterface) { + public VoiceCommandManager(ISdl internalInterface) { // setup super(internalInterface); } diff --git a/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java b/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java index 55d271a1e..70be2008a 100644 --- a/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java +++ b/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java @@ -150,7 +150,7 @@ abstract class BaseMenuManager extends BaseSubManager { waitingOnHMIUpdate = false; // Update our Lists - this.oldMenuCells = new ArrayList<>(menuCells); + this.oldMenuCells = new ArrayList<>(menuCells != null ? menuCells : cells); menuCells = new ArrayList<>(cells); // HashSet order doesnt matter / does not allow duplicates @@ -308,7 +308,7 @@ abstract class BaseMenuManager extends BaseSubManager { List<RPCRequest> mainMenuCommands; final List<RPCRequest> subMenuCommands; - if (findAllArtworksToBeUploadedFromCells(menuCells).size() == 0 || !supportsImages()){ + if (findAllArtworksToBeUploadedFromCells(menuCells).size() > 0 || !supportsImages()){ // Send artwork-less menu mainMenuCommands = mainMenuCommandsForCells(menuCells, false); subMenuCommands = subMenuCommandsForCells(menuCells, false); diff --git a/javaSE/src/main/java/com/smartdevicelink/managers/screen/menu/MenuManager.java b/javaSE/src/main/java/com/smartdevicelink/managers/screen/menu/MenuManager.java index c244d0d39..4a28a2792 100644 --- a/javaSE/src/main/java/com/smartdevicelink/managers/screen/menu/MenuManager.java +++ b/javaSE/src/main/java/com/smartdevicelink/managers/screen/menu/MenuManager.java @@ -42,9 +42,9 @@ import com.smartdevicelink.proxy.interfaces.ISdl; * * The MenuManager takes MenuCell objects and creates and sends all necessary RPCs to build out a menu */ -class MenuManager extends BaseMenuManager { +public class MenuManager extends BaseMenuManager { - MenuManager(ISdl internalInterface, FileManager fileManager) { + public MenuManager(ISdl internalInterface, FileManager fileManager) { // setup super(internalInterface, fileManager); } diff --git a/javaSE/src/main/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManager.java b/javaSE/src/main/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManager.java index a5492a384..a892d3a2c 100644 --- a/javaSE/src/main/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManager.java +++ b/javaSE/src/main/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManager.java @@ -41,9 +41,9 @@ import com.smartdevicelink.proxy.interfaces.ISdl; * * The VoiceCommandManager takes a List of VoiceCommand objects and sets them on the Head unit for you. */ -class VoiceCommandManager extends BaseVoiceCommandManager { +public class VoiceCommandManager extends BaseVoiceCommandManager { - VoiceCommandManager(ISdl internalInterface) { + public VoiceCommandManager(ISdl internalInterface) { // setup super(internalInterface); } |