diff options
author | Bilal Alsharifi <bilal.alsharifi@gmail.com> | 2020-04-06 16:05:31 -0400 |
---|---|---|
committer | Bilal Alsharifi <bilal.alsharifi@gmail.com> | 2020-04-06 16:05:31 -0400 |
commit | 261a341748dc7bd14f261d169ed6c4ae0b5bc984 (patch) | |
tree | a04e0d01e9f5bf883c226ea6b0b41ca9c0ab99f7 /android/sdl_android/src/main | |
parent | c62381c9025197912c0d00ddfb54578fd75c40b4 (diff) | |
download | sdl_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.java | 34 |
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)); } /** |