7373import com .smartdevicelink .util .Version ;
7474
7575import java .lang .ref .WeakReference ;
76+ import java .lang .reflect .Array ;
7677import java .util .ArrayList ;
78+ import java .util .Arrays ;
7779import java .util .List ;
7880import java .util .concurrent .CopyOnWriteArrayList ;
7981import 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