Skip to content

Commit 303827d

Browse files
author
Julian Kast
committed
In VideoStreamManager, Added two list to hold hmi Levels
In VideoStreamManager, Added two list: streamableLevels to hold hmi Levels that allow videoStreaming nonStreamableLevels to hold hmi levels that do not allow streaming Changed logic in class to use new list to check hmi states
1 parent 6bbf4bb commit 303827d

1 file changed

Lines changed: 10 additions & 6 deletions

File tree

android/sdl_android/src/main/java/com/smartdevicelink/managers/video/VideoStreamManager.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,9 @@
7373
import com.smartdevicelink.util.Version;
7474

7575
import java.lang.ref.WeakReference;
76+
import java.lang.reflect.Array;
7677
import java.util.ArrayList;
78+
import java.util.Arrays;
7779
import java.util.List;
7880
import java.util.concurrent.CopyOnWriteArrayList;
7981
import java.util.concurrent.FutureTask;
@@ -95,6 +97,8 @@ public class VideoStreamManager extends BaseVideoStreamManager {
9597
private IVideoStreamListener streamListener;
9698
private boolean isTransportAvailable = false;
9799
private boolean hasStarted;
100+
private List<HMILevel> streamableLevels = new ArrayList<>(Arrays.asList(HMILevel.HMI_FULL, HMILevel.HMI_LIMITED));
101+
private List<HMILevel> nonStreamableLevels = new ArrayList<>(Arrays.asList(HMILevel.HMI_NONE, HMILevel.HMI_BACKGROUND));
98102

99103
// INTERNAL INTERFACES
100104

@@ -151,10 +155,10 @@ public void onNotified(RPCNotification notification) {
151155
}
152156
HMILevel prevHMILevel = hmiLevel;
153157
hmiLevel = onHMIStatus.getHmiLevel();
154-
if(hmiLevel.equals(HMILevel.HMI_FULL)){
158+
if (streamableLevels.contains(hmiLevel)) {
155159
checkState();
156160
}
157-
if (hasStarted && (prevHMILevel == HMILevel.HMI_FULL || prevHMILevel == HMILevel.HMI_LIMITED) && (hmiLevel == HMILevel.HMI_NONE || hmiLevel == HMILevel.HMI_BACKGROUND)){
161+
if (hasStarted && (streamableLevels.contains(prevHMILevel)) && (nonStreamableLevels.contains(hmiLevel))) {
158162
internalInterface.stopVideoService();
159163
}
160164
}
@@ -205,7 +209,7 @@ private synchronized void checkState(){
205209
if(this.getState() == SETTING_UP
206210
&& isTransportAvailable
207211
&& hmiLevel != null
208-
&& (hmiLevel.equals(HMILevel.HMI_FULL) || hmiLevel.equals(HMILevel.HMI_LIMITED))
212+
&& streamableLevels.contains(hmiLevel)
209213
&& parameters != null){
210214
stateMachine.transitionToState(StreamingStateMachine.READY);
211215
transitionToState(READY);
@@ -303,7 +307,7 @@ public void onError(String info) {
303307
*/
304308
protected void startStreaming(VideoStreamingParameters parameters, boolean encrypted){
305309
this.parameters = parameters;
306-
if(hmiLevel != HMILevel.HMI_FULL && hmiLevel != HMILevel.HMI_LIMITED){
310+
if (nonStreamableLevels.contains(hmiLevel)) {
307311
Log.e(TAG, "Cannot start video service if HMILevel is not FULL or LIMITED.");
308312
return;
309313
}
@@ -399,15 +403,15 @@ public boolean isServiceActive(){
399403
* @return boolean (true = yes, false = no)
400404
*/
401405
public boolean isStreaming(){
402-
return (stateMachine.getState() == StreamingStateMachine.STARTED) && (hmiLevel == HMILevel.HMI_FULL);
406+
return (stateMachine.getState() == StreamingStateMachine.STARTED) && (streamableLevels.contains(hmiLevel));
403407
}
404408

405409
/**
406410
* Check if video streaming has been paused due to app moving to background or manually stopped
407411
* @return boolean (true = not paused, false = paused)
408412
*/
409413
public boolean isPaused(){
410-
return (hasStarted && stateMachine.getState() == StreamingStateMachine.STOPPED) || (hmiLevel != HMILevel.HMI_FULL);
414+
return (hasStarted && stateMachine.getState() == StreamingStateMachine.STOPPED) || (nonStreamableLevels.contains(hmiLevel));
411415
}
412416

413417
/**

0 commit comments

Comments
 (0)