summaryrefslogtreecommitdiff
path: root/android/sdl_android/src/main
diff options
context:
space:
mode:
authorBilal Alsharifi <bilal.alsharifi@gmail.com>2020-04-06 16:05:31 -0400
committerBilal Alsharifi <bilal.alsharifi@gmail.com>2020-04-06 16:05:31 -0400
commit261a341748dc7bd14f261d169ed6c4ae0b5bc984 (patch)
treea04e0d01e9f5bf883c226ea6b0b41ca9c0ab99f7 /android/sdl_android/src/main
parentc62381c9025197912c0d00ddfb54578fd75c40b4 (diff)
downloadsdl_android-261a341748dc7bd14f261d169ed6c4ae0b5bc984.tar.gz
Update VideoStreamManager to use VideoStreamingState
Diffstat (limited to 'android/sdl_android/src/main')
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/video/VideoStreamManager.java34
1 files changed, 17 insertions, 17 deletions
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/VideoStreamManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/VideoStreamManager.java
index 076bdcd9d..3b80fbe4b 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/VideoStreamManager.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/VideoStreamManager.java
@@ -65,6 +65,7 @@ import com.smartdevicelink.proxy.rpc.enums.HMILevel;
import com.smartdevicelink.proxy.rpc.enums.PredefinedWindows;
import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType;
import com.smartdevicelink.proxy.rpc.enums.TouchType;
+import com.smartdevicelink.proxy.rpc.enums.VideoStreamingState;
import com.smartdevicelink.proxy.rpc.listeners.OnRPCNotificationListener;
import com.smartdevicelink.streaming.video.SdlRemoteDisplay;
import com.smartdevicelink.streaming.video.VideoStreamingParameters;
@@ -74,7 +75,6 @@ import com.smartdevicelink.util.Version;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.FutureTask;
@@ -90,13 +90,12 @@ public class VideoStreamManager extends BaseVideoStreamManager {
private float[] touchScalar = {1.0f,1.0f}; //x, y
private HapticInterfaceManager hapticManager;
private SdlMotionEvent sdlMotionEvent = null;
- private HMILevel hmiLevel;
+ private OnHMIStatus currentOnHMIStatus;
private StreamingStateMachine stateMachine;
private VideoStreamingParameters parameters;
private IVideoStreamListener streamListener;
private boolean isTransportAvailable = false;
private boolean hasStarted;
- private List<HMILevel> streamableLevels = Arrays.asList(HMILevel.HMI_FULL, HMILevel.HMI_LIMITED);
// INTERNAL INTERFACES
@@ -151,12 +150,10 @@ public class VideoStreamManager extends BaseVideoStreamManager {
if (onHMIStatus.getWindowID() != null && onHMIStatus.getWindowID() != PredefinedWindows.DEFAULT_WINDOW.getValue()) {
return;
}
- HMILevel prevHMILevel = hmiLevel;
- hmiLevel = onHMIStatus.getHmiLevel();
- if (streamableLevels.contains(hmiLevel)) {
- checkState();
- }
- if (hasStarted && (streamableLevels.contains(prevHMILevel)) && (!streamableLevels.contains(hmiLevel))) {
+ OnHMIStatus prevOnHMIStatus = currentOnHMIStatus;
+ currentOnHMIStatus = onHMIStatus;
+ checkState();
+ if (hasStarted && (isHMIStateVideoStreamCapable(prevOnHMIStatus)) && (!isHMIStateVideoStreamCapable(currentOnHMIStatus))) {
internalInterface.stopVideoService();
}
}
@@ -183,7 +180,6 @@ public class VideoStreamManager extends BaseVideoStreamManager {
super(internalInterface);
virtualDisplayEncoder = new VirtualDisplayEncoder();
- hmiLevel = HMILevel.HMI_NONE;
// Listen for video service events
internalInterface.addServiceListener(SessionType.NAV, serviceListener);
@@ -206,14 +202,19 @@ public class VideoStreamManager extends BaseVideoStreamManager {
private synchronized void checkState(){
if(this.getState() == SETTING_UP
&& isTransportAvailable
- && hmiLevel != null
- && streamableLevels.contains(hmiLevel)
+ && isHMIStateVideoStreamCapable(currentOnHMIStatus)
&& parameters != null){
stateMachine.transitionToState(StreamingStateMachine.READY);
transitionToState(READY);
}
}
+ boolean isHMIStateVideoStreamCapable(OnHMIStatus onHMIStatus) {
+ HMILevel hmiLevel = (onHMIStatus != null && onHMIStatus.getHmiLevel() != null) ? onHMIStatus.getHmiLevel() : HMILevel.HMI_NONE;
+ VideoStreamingState videoStreamingState = (onHMIStatus != null && onHMIStatus.getVideoStreamingState() != null) ? onHMIStatus.getVideoStreamingState() : VideoStreamingState.STREAMABLE;
+ return (hmiLevel.equals(HMILevel.HMI_FULL) || hmiLevel.equals(HMILevel.HMI_LIMITED)) && videoStreamingState.equals(VideoStreamingState.STREAMABLE);
+ }
+
private void getVideoStreamingParams(){
if(internalInterface.getProtocolVersion().getMajor() >= 5) {
internalInterface.getCapability(SystemCapabilityType.VIDEO_STREAMING, new OnSystemCapabilityListener() {
@@ -305,13 +306,12 @@ public class VideoStreamManager extends BaseVideoStreamManager {
*/
protected void startStreaming(VideoStreamingParameters parameters, boolean encrypted){
this.parameters = parameters;
- if (!streamableLevels.contains(hmiLevel)) {
- Log.e(TAG, "Cannot start video service if HMILevel is not FULL or LIMITED.");
+ if (!isHMIStateVideoStreamCapable(currentOnHMIStatus)) {
+ Log.e(TAG, "Cannot start video service in the current HMI status");
return;
}
//Start the video service
this.internalInterface.startVideoService(parameters, encrypted);
-
}
/**
@@ -401,7 +401,7 @@ public class VideoStreamManager extends BaseVideoStreamManager {
* @return boolean (true = yes, false = no)
*/
public boolean isStreaming(){
- return (stateMachine.getState() == StreamingStateMachine.STARTED) && (streamableLevels.contains(hmiLevel));
+ return (stateMachine.getState() == StreamingStateMachine.STARTED) && (isHMIStateVideoStreamCapable(currentOnHMIStatus));
}
/**
@@ -409,7 +409,7 @@ public class VideoStreamManager extends BaseVideoStreamManager {
* @return boolean (true = not paused, false = paused)
*/
public boolean isPaused(){
- return (hasStarted && stateMachine.getState() == StreamingStateMachine.STOPPED) || (!streamableLevels.contains(hmiLevel));
+ return (hasStarted && stateMachine.getState() == StreamingStateMachine.STOPPED) || (!isHMIStateVideoStreamCapable(currentOnHMIStatus));
}
/**