diff options
author | Joey Grover <joeygrover@gmail.com> | 2018-07-26 16:30:35 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-26 16:30:35 -0400 |
commit | 7ec84be8412c77d692dff6b8882d1536f2427cee (patch) | |
tree | 45c203d42487517173adba81e1bffc983976c62b | |
parent | 9682b3727e7bf44640de9deebd516c7ed373913f (diff) | |
parent | 700fe6fd655aadb4791351a6a1c16cc91cb30a97 (diff) | |
download | sdl_android-7ec84be8412c77d692dff6b8882d1536f2427cee.tar.gz |
Merge pull request #800 from smartdevicelink/feature/issue_710_audio_streaming_indicator
feature/issue710 Add audio streaming indicator
7 files changed, 167 insertions, 4 deletions
diff --git a/sdl_android/src/androidTest/assets/json/SetMediaClockTimer.json b/sdl_android/src/androidTest/assets/json/SetMediaClockTimer.json index af1671200..e4950d05d 100644 --- a/sdl_android/src/androidTest/assets/json/SetMediaClockTimer.json +++ b/sdl_android/src/androidTest/assets/json/SetMediaClockTimer.json @@ -13,7 +13,8 @@ "seconds":19, "hours":12 }, - "updateMode":"COUNTDOWN" + "updateMode":"COUNTDOWN", + "audioStreamingIndicator":"PLAY" } }, "response":{ diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/Test.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/Test.java index b971341fc..25c79677e 100644 --- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/Test.java +++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/Test.java @@ -63,6 +63,7 @@ import com.smartdevicelink.proxy.rpc.VrHelpItem; import com.smartdevicelink.proxy.rpc.enums.AmbientLightStatus; import com.smartdevicelink.proxy.rpc.enums.AppHMIType; import com.smartdevicelink.proxy.rpc.enums.AppInterfaceUnregisteredReason; +import com.smartdevicelink.proxy.rpc.enums.AudioStreamingIndicator; import com.smartdevicelink.proxy.rpc.enums.AudioStreamingState; import com.smartdevicelink.proxy.rpc.enums.AudioType; import com.smartdevicelink.proxy.rpc.enums.BitsPerSample; @@ -278,6 +279,7 @@ public class Test { public static final SingleTireStatus GENERAL_SINGLETIRESTATUS = new SingleTireStatus(); public static final DriverDistractionState GENERAL_DRIVERDISTRACTIONSTATE = DriverDistractionState.DD_ON; public static final List<LocationDetails> GENERAL_LOCATIONDETAILS_LIST = Arrays.asList(new LocationDetails[] { Test.GENERAL_LOCATIONDETAILS, Test.GENERAL_LOCATIONDETAILS}); + public static final AudioStreamingIndicator GENERAL_AUDIO_STREAMING_INDICATOR = AudioStreamingIndicator.PLAY; public static final ModuleType GENERAL_MODULETYPE = ModuleType.CLIMATE; diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/AudioStreamingIndicatorTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/AudioStreamingIndicatorTests.java new file mode 100644 index 000000000..85312ecde --- /dev/null +++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/AudioStreamingIndicatorTests.java @@ -0,0 +1,80 @@ +package com.smartdevicelink.test.rpc.enums; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import junit.framework.TestCase; + +import com.smartdevicelink.proxy.rpc.enums.AudioStreamingIndicator; + +/** + * This is a unit test class for the SmartDeviceLink library project class : + * {@link com.smartdevicelink.proxy.rpc.enums.AudioStreamingIndicator} + */ +public class AudioStreamingIndicatorTests extends TestCase { + + /** + * Verifies that the enum values are not null upon valid assignment. + */ + public void testValidEnums () { + String example = "PLAY_PAUSE"; + AudioStreamingIndicator enumPlayPause = AudioStreamingIndicator.valueForString(example); + example = "PLAY"; + AudioStreamingIndicator enumPlay = AudioStreamingIndicator.valueForString(example); + example = "PAUSE"; + AudioStreamingIndicator enumPause = AudioStreamingIndicator.valueForString(example); + example = "STOP"; + AudioStreamingIndicator enumStop = AudioStreamingIndicator.valueForString(example); + + + assertNotNull("PLAY_PAUSE returned null", enumPlayPause); + assertNotNull("PLAY returned null", enumPlay); + assertNotNull("PAUSE returned null", enumPause); + assertNotNull("STOP returned null", enumStop); + } + + /** + * Verifies that an invalid assignment is null. + */ + public void testInvalidEnum () { + String example = "pLayPauZe"; + try { + AudioStreamingIndicator temp = AudioStreamingIndicator.valueForString(example); + assertNull("Result of valueForString should be null.", temp); + } + catch (IllegalArgumentException exception) { + fail("Invalid enum throws IllegalArgumentException."); + } + } + + /** + * Verifies that a null assignment is invalid. + */ + public void testNullEnum () { + String example = null; + try { + AudioStreamingIndicator temp = AudioStreamingIndicator.valueForString(example); + assertNull("Result of valueForString should be null.", temp); + } + catch (NullPointerException exception) { + fail("Null string throws NullPointerException."); + } + } + + /** + * Verifies the possible enum values of AudioStreamingIndicator. + */ + public void testListEnum() { + List<AudioStreamingIndicator> enumValueList = Arrays.asList(AudioStreamingIndicator.values()); + + List<AudioStreamingIndicator> enumTestList = new ArrayList<>(); + enumTestList.add(AudioStreamingIndicator.PLAY_PAUSE); + enumTestList.add(AudioStreamingIndicator.PLAY); + enumTestList.add(AudioStreamingIndicator.PAUSE); + enumTestList.add(AudioStreamingIndicator.STOP); + + assertTrue("Enum value list does not match enum class list", + enumValueList.containsAll(enumTestList) && enumTestList.containsAll(enumValueList)); + } +}
\ No newline at end of file diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/AudioStreamingStateTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/AudioStreamingStateTests.java index ab5972218..178613e53 100644 --- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/AudioStreamingStateTests.java +++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/enums/AudioStreamingStateTests.java @@ -10,7 +10,7 @@ import com.smartdevicelink.proxy.rpc.enums.AudioStreamingState; /** * This is a unit test class for the SmartDeviceLink library project class : - * {@link com.smartdevicelink.rpc.enums.AudioStreaming} + * {@link com.smartdevicelink.proxy.rpc.enums.AudioStreamingState} */ public class AudioStreamingStateTests extends TestCase { diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SetMediaClockTimerTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SetMediaClockTimerTests.java index 7d52bb75c..a90bd31b9 100644 --- a/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SetMediaClockTimerTests.java +++ b/sdl_android/src/androidTest/java/com/smartdevicelink/test/rpc/requests/SetMediaClockTimerTests.java @@ -10,6 +10,7 @@ import com.smartdevicelink.protocol.enums.FunctionID; import com.smartdevicelink.proxy.RPCMessage; import com.smartdevicelink.proxy.rpc.SetMediaClockTimer; import com.smartdevicelink.proxy.rpc.StartTime; +import com.smartdevicelink.proxy.rpc.enums.AudioStreamingIndicator; import com.smartdevicelink.proxy.rpc.enums.UpdateMode; import com.smartdevicelink.test.BaseRpcTests; import com.smartdevicelink.test.JsonUtils; @@ -19,7 +20,7 @@ import com.smartdevicelink.test.json.rpc.JsonFileReader; /** * This is a unit test class for the SmartDeviceLink library project class : - * {@link com.smartdevicelink.rpc.SetMediaClockTimer} + * {@link com.smartdevicelink.proxy.rpc.SetMediaClockTimer} */ public class SetMediaClockTimerTests extends BaseRpcTests { @@ -30,6 +31,7 @@ public class SetMediaClockTimerTests extends BaseRpcTests { msg.setStartTime(Test.GENERAL_STARTTIME); msg.setEndTime(Test.GENERAL_STARTTIME); msg.setUpdateMode(Test.GENERAL_UPDATEMODE); + msg.setAudioStreamingIndicator(Test.GENERAL_AUDIO_STREAMING_INDICATOR); return msg; } @@ -51,7 +53,8 @@ public class SetMediaClockTimerTests extends BaseRpcTests { try { result.put(SetMediaClockTimer.KEY_START_TIME, Test.JSON_STARTTIME); result.put(SetMediaClockTimer.KEY_END_TIME, Test.JSON_STARTTIME); - result.put(SetMediaClockTimer.KEY_UPDATE_MODE, Test.GENERAL_UPDATEMODE); + result.put(SetMediaClockTimer.KEY_UPDATE_MODE, Test.GENERAL_UPDATEMODE); + result.put(SetMediaClockTimer.KEY_AUDIO_STREAMING_INDICATOR, Test.GENERAL_AUDIO_STREAMING_INDICATOR); } catch (JSONException e) { fail(Test.JSON_FAIL); } @@ -67,9 +70,11 @@ public class SetMediaClockTimerTests extends BaseRpcTests { StartTime testStartTime = ( (SetMediaClockTimer) msg ).getStartTime(); StartTime testEndTime = ( (SetMediaClockTimer) msg ).getEndTime(); UpdateMode testUpdateMode = ( (SetMediaClockTimer) msg ).getUpdateMode(); + AudioStreamingIndicator testAudioStreamingIndicator = ( (SetMediaClockTimer) msg ).getAudioStreamingIndicator(); // Valid Tests assertEquals(Test.MATCH, Test.GENERAL_UPDATEMODE, testUpdateMode); + assertEquals(Test.MATCH, Test.GENERAL_AUDIO_STREAMING_INDICATOR, testAudioStreamingIndicator); assertTrue(Test.TRUE, Validator.validateStartTime(Test.GENERAL_STARTTIME, testStartTime)); assertTrue(Test.TRUE, Validator.validateStartTime(Test.GENERAL_STARTTIME, testEndTime)); @@ -81,6 +86,7 @@ public class SetMediaClockTimerTests extends BaseRpcTests { assertNull(Test.NULL, msg.getStartTime()); assertNull(Test.NULL, msg.getEndTime()); assertNull(Test.NULL, msg.getUpdateMode()); + assertNull(Test.NULL, msg.getAudioStreamingIndicator()); } /** @@ -110,6 +116,7 @@ public class SetMediaClockTimerTests extends BaseRpcTests { StartTime referenceEndTime = new StartTime(JsonRPCMarshaller.deserializeJSONObject(endTime)); assertTrue(Test.TRUE, Validator.validateStartTime(referenceEndTime, cmd.getEndTime())); assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(parameters, SetMediaClockTimer.KEY_UPDATE_MODE), cmd.getUpdateMode().toString()); + assertEquals(Test.MATCH, JsonUtils.readStringFromJsonObject(parameters, SetMediaClockTimer.KEY_AUDIO_STREAMING_INDICATOR), cmd.getAudioStreamingIndicator().toString()); } catch (JSONException e) { fail(Test.JSON_FAIL); } diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimer.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimer.java index 4ec73b9d7..fb15e3242 100644 --- a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimer.java +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/SetMediaClockTimer.java @@ -4,6 +4,7 @@ import android.support.annotation.NonNull; import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.proxy.RPCRequest;
+import com.smartdevicelink.proxy.rpc.enums.AudioStreamingIndicator;
import com.smartdevicelink.proxy.rpc.enums.UpdateMode;
import java.util.Hashtable;
@@ -54,6 +55,13 @@ import java.util.Hashtable; * <td>SmartDeviceLink 1.0</td>
* </tr>
* <tr>
+ * <td>audioStreamingIndicator</td>
+ * <td>AudioStreamingIndicator</td>
+ * <td></td>
+ * <td>N</td>
+ * <td></td>
+ * <td>SmartDeviceLink 4.6</td>
+ * </tr>
*
* </table>
*
@@ -76,6 +84,7 @@ public class SetMediaClockTimer extends RPCRequest { public static final String KEY_START_TIME = "startTime";
public static final String KEY_END_TIME = "endTime";
public static final String KEY_UPDATE_MODE = "updateMode";
+ public static final String KEY_AUDIO_STREAMING_INDICATOR = "audioStreamingIndicator";
/**
* Constructs a new SetMediaClockTimer object
*/
@@ -168,4 +177,20 @@ public class SetMediaClockTimer extends RPCRequest { public void setUpdateMode( @NonNull UpdateMode updateMode ) {
setParameters(KEY_UPDATE_MODE, updateMode);
}
+
+ /**
+ * Gets the playback status of a media app
+ *
+ * @return AudioStreamingIndicator - a Enumeration value
+ */
+ public AudioStreamingIndicator getAudioStreamingIndicator() {
+ return (AudioStreamingIndicator) getObject(AudioStreamingIndicator.class, KEY_AUDIO_STREAMING_INDICATOR);
+ }
+
+ /**
+ * Sets the playback status of a media app
+ */
+ public void setAudioStreamingIndicator(AudioStreamingIndicator audioStreamingIndicator ) {
+ setParameters(KEY_AUDIO_STREAMING_INDICATOR, audioStreamingIndicator);
+ }
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/AudioStreamingIndicator.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/AudioStreamingIndicator.java new file mode 100644 index 000000000..1792de469 --- /dev/null +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/rpc/enums/AudioStreamingIndicator.java @@ -0,0 +1,48 @@ +package com.smartdevicelink.proxy.rpc.enums; + +/** + * Identifies the playback status of a media app + * + * @since SmartDeviceLink 4.6 + */ +public enum AudioStreamingIndicator { + /** + * Default playback indicator. + * + * @since SmartDeviceLink 4.6 + */ + PLAY_PAUSE, + + /** + * Indicates that a button press of the Play/Pause button would start the playback. + * + * @since SmartDeviceLink 4.6 + */ + PLAY, + /** + * Indicates that a button press of the Play/Pause button would pause the current playback. + * + * @since SmartDeviceLink 4.6 + */ + PAUSE, + /** + * Indicates that a button press of the Play/Pause button would stop the current playback. + * + * @since SmartDeviceLink 4.6 + */ + STOP, + ; + + /** + * Convert String to AudioStreamingIndicator + * @param value String + * @return AudioStreamingIndicator + */ + public static AudioStreamingIndicator valueForString(String value) { + try{ + return valueOf(value); + }catch(Exception e){ + return null; + } + } +} |