summaryrefslogtreecommitdiff
path: root/android/sdl_android/src/main/java/com/smartdevicelink/managers
diff options
context:
space:
mode:
Diffstat (limited to 'android/sdl_android/src/main/java/com/smartdevicelink/managers')
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/ProxyBridge.java686
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManager.java12
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManagerListener.java15
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioStreamManager.java81
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/file/FileManager.java10
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java61
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenConfig.java24
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenManager.java5
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/permission/PermissionManager.java2
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/ScreenManager.java2
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/SoftButtonManager.java2
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/SubscribeButtonManager.java3
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/TextAndGraphicManager.java6
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManager.java2
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/MenuManager.java3
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManager.java3
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/video/HapticInterfaceManager.java8
-rw-r--r--android/sdl_android/src/main/java/com/smartdevicelink/managers/video/VideoStreamManager.java162
18 files changed, 226 insertions, 861 deletions
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/ProxyBridge.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/ProxyBridge.java
deleted file mode 100644
index 69180d255..000000000
--- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/ProxyBridge.java
+++ /dev/null
@@ -1,686 +0,0 @@
-/*
- * Copyright (c) 2019 Livio, Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following
- * disclaimer in the documentation and/or other materials provided with the
- * distribution.
- *
- * Neither the name of the Livio Inc. nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- * POSSIBILITY OF SUCH DAMAGE.
- */
-
-package com.smartdevicelink.managers;
-
-import android.util.SparseArray;
-
-import com.smartdevicelink.protocol.enums.FunctionID;
-import com.smartdevicelink.proxy.IProxyListener;
-import com.smartdevicelink.proxy.RPCMessage;
-import com.smartdevicelink.proxy.callbacks.OnServiceEnded;
-import com.smartdevicelink.proxy.callbacks.OnServiceNACKed;
-import com.smartdevicelink.proxy.rpc.AddCommandResponse;
-import com.smartdevicelink.proxy.rpc.AddSubMenuResponse;
-import com.smartdevicelink.proxy.rpc.AlertManeuverResponse;
-import com.smartdevicelink.proxy.rpc.AlertResponse;
-import com.smartdevicelink.proxy.rpc.ButtonPressResponse;
-import com.smartdevicelink.proxy.rpc.CancelInteractionResponse;
-import com.smartdevicelink.proxy.rpc.ChangeRegistrationResponse;
-import com.smartdevicelink.proxy.rpc.CloseApplicationResponse;
-import com.smartdevicelink.proxy.rpc.CreateInteractionChoiceSetResponse;
-import com.smartdevicelink.proxy.rpc.CreateWindowResponse;
-import com.smartdevicelink.proxy.rpc.DeleteCommandResponse;
-import com.smartdevicelink.proxy.rpc.DeleteFileResponse;
-import com.smartdevicelink.proxy.rpc.DeleteInteractionChoiceSetResponse;
-import com.smartdevicelink.proxy.rpc.DeleteSubMenuResponse;
-import com.smartdevicelink.proxy.rpc.DeleteWindowResponse;
-import com.smartdevicelink.proxy.rpc.DiagnosticMessageResponse;
-import com.smartdevicelink.proxy.rpc.DialNumberResponse;
-import com.smartdevicelink.proxy.rpc.EndAudioPassThruResponse;
-import com.smartdevicelink.proxy.rpc.GenericResponse;
-import com.smartdevicelink.proxy.rpc.GetAppServiceDataResponse;
-import com.smartdevicelink.proxy.rpc.GetCloudAppPropertiesResponse;
-import com.smartdevicelink.proxy.rpc.GetDTCsResponse;
-import com.smartdevicelink.proxy.rpc.GetFileResponse;
-import com.smartdevicelink.proxy.rpc.GetInteriorVehicleDataConsentResponse;
-import com.smartdevicelink.proxy.rpc.GetInteriorVehicleDataResponse;
-import com.smartdevicelink.proxy.rpc.GetSystemCapabilityResponse;
-import com.smartdevicelink.proxy.rpc.GetVehicleDataResponse;
-import com.smartdevicelink.proxy.rpc.GetWayPointsResponse;
-import com.smartdevicelink.proxy.rpc.ListFilesResponse;
-import com.smartdevicelink.proxy.rpc.OnAppInterfaceUnregistered;
-import com.smartdevicelink.proxy.rpc.OnAppServiceData;
-import com.smartdevicelink.proxy.rpc.OnAudioPassThru;
-import com.smartdevicelink.proxy.rpc.OnButtonEvent;
-import com.smartdevicelink.proxy.rpc.OnButtonPress;
-import com.smartdevicelink.proxy.rpc.OnCommand;
-import com.smartdevicelink.proxy.rpc.OnDriverDistraction;
-import com.smartdevicelink.proxy.rpc.OnHMIStatus;
-import com.smartdevicelink.proxy.rpc.OnHashChange;
-import com.smartdevicelink.proxy.rpc.OnInteriorVehicleData;
-import com.smartdevicelink.proxy.rpc.OnKeyboardInput;
-import com.smartdevicelink.proxy.rpc.OnLanguageChange;
-import com.smartdevicelink.proxy.rpc.OnPermissionsChange;
-import com.smartdevicelink.proxy.rpc.OnRCStatus;
-import com.smartdevicelink.proxy.rpc.OnSystemCapabilityUpdated;
-import com.smartdevicelink.proxy.rpc.OnSystemRequest;
-import com.smartdevicelink.proxy.rpc.OnTBTClientState;
-import com.smartdevicelink.proxy.rpc.OnTouchEvent;
-import com.smartdevicelink.proxy.rpc.OnVehicleData;
-import com.smartdevicelink.proxy.rpc.OnWayPointChange;
-import com.smartdevicelink.proxy.rpc.PerformAppServiceInteractionResponse;
-import com.smartdevicelink.proxy.rpc.PerformAudioPassThruResponse;
-import com.smartdevicelink.proxy.rpc.PerformInteractionResponse;
-import com.smartdevicelink.proxy.rpc.PublishAppServiceResponse;
-import com.smartdevicelink.proxy.rpc.PutFileResponse;
-import com.smartdevicelink.proxy.rpc.ReadDIDResponse;
-import com.smartdevicelink.proxy.rpc.RegisterAppInterfaceResponse;
-import com.smartdevicelink.proxy.rpc.ReleaseInteriorVehicleDataModuleResponse;
-import com.smartdevicelink.proxy.rpc.ResetGlobalPropertiesResponse;
-import com.smartdevicelink.proxy.rpc.ScrollableMessageResponse;
-import com.smartdevicelink.proxy.rpc.SendHapticDataResponse;
-import com.smartdevicelink.proxy.rpc.SendLocationResponse;
-import com.smartdevicelink.proxy.rpc.SetAppIconResponse;
-import com.smartdevicelink.proxy.rpc.SetCloudAppPropertiesResponse;
-import com.smartdevicelink.proxy.rpc.SetDisplayLayoutResponse;
-import com.smartdevicelink.proxy.rpc.SetGlobalPropertiesResponse;
-import com.smartdevicelink.proxy.rpc.SetInteriorVehicleDataResponse;
-import com.smartdevicelink.proxy.rpc.SetMediaClockTimerResponse;
-import com.smartdevicelink.proxy.rpc.ShowAppMenuResponse;
-import com.smartdevicelink.proxy.rpc.ShowConstantTbtResponse;
-import com.smartdevicelink.proxy.rpc.ShowResponse;
-import com.smartdevicelink.proxy.rpc.SliderResponse;
-import com.smartdevicelink.proxy.rpc.SpeakResponse;
-import com.smartdevicelink.proxy.rpc.SubscribeButtonResponse;
-import com.smartdevicelink.proxy.rpc.SubscribeVehicleDataResponse;
-import com.smartdevicelink.proxy.rpc.SubscribeWayPointsResponse;
-import com.smartdevicelink.proxy.rpc.SystemRequestResponse;
-import com.smartdevicelink.proxy.rpc.UnpublishAppServiceResponse;
-import com.smartdevicelink.proxy.rpc.UnregisterAppInterfaceResponse;
-import com.smartdevicelink.proxy.rpc.UnsubscribeButtonResponse;
-import com.smartdevicelink.proxy.rpc.UnsubscribeVehicleDataResponse;
-import com.smartdevicelink.proxy.rpc.UnsubscribeWayPointsResponse;
-import com.smartdevicelink.proxy.rpc.UpdateTurnListResponse;
-import com.smartdevicelink.proxy.rpc.enums.SdlDisconnectedReason;
-import com.smartdevicelink.proxy.rpc.listeners.OnRPCListener;
-
-import java.util.concurrent.CopyOnWriteArrayList;
-
-@Deprecated
-public class ProxyBridge implements IProxyListener{
- private final Object RPC_LISTENER_LOCK = new Object();
- private SparseArray<CopyOnWriteArrayList<OnRPCListener>> rpcListeners = null;
- private final LifecycleListener lifecycleListener;
-
- @Override
- public void onProxyOpened() {}
-
- @Override
- public void onRegisterAppInterfaceResponse(RegisterAppInterfaceResponse response) {
- onRPCReceived(response);
- if(response.getSuccess()){
- lifecycleListener.onProxyConnected();
- }
- }
-
- @Override
- public void onOnAppInterfaceUnregistered(OnAppInterfaceUnregistered notification) {
- onRPCReceived(notification);
- }
-
- @Override
- public void onUnregisterAppInterfaceResponse(UnregisterAppInterfaceResponse response) {
- onRPCReceived(response);
- }
-
- protected interface LifecycleListener{
- void onProxyConnected();
- void onProxyClosed(String info, Exception e, SdlDisconnectedReason reason);
- void onServiceEnded(OnServiceEnded serviceEnded);
- void onServiceNACKed(OnServiceNACKed serviceNACKed);
- void onError(String info, Exception e);
- }
-
- public ProxyBridge( LifecycleListener lifecycleListener){
- this.lifecycleListener = lifecycleListener;
- rpcListeners = new SparseArray<>();
- }
-
- public boolean onRPCReceived(final RPCMessage message){
- synchronized(RPC_LISTENER_LOCK){
- final int id = FunctionID.getFunctionId(message.getFunctionName());
- CopyOnWriteArrayList<OnRPCListener> listeners = rpcListeners.get(id);
- if(listeners!=null && listeners.size()>0) {
- for (OnRPCListener listener : listeners) {
- listener.onReceived(message);
- }
- return true;
- }
- return false;
- }
- }
-
- protected void addRpcListener(FunctionID id, OnRPCListener listener){
- synchronized(RPC_LISTENER_LOCK){
- if (id != null && listener != null) {
- if (rpcListeners.indexOfKey(id.getId()) < 0) {
- rpcListeners.put(id.getId(), new CopyOnWriteArrayList<OnRPCListener>());
- }
- rpcListeners.get(id.getId()).add(listener);
- }
- }
- }
-
- public boolean removeOnRPCListener(FunctionID id, OnRPCListener listener){
- synchronized(RPC_LISTENER_LOCK){
- if(rpcListeners!= null
- && id != null
- && listener != null
- && rpcListeners.indexOfKey(id.getId()) >= 0){
- return rpcListeners.get(id.getId()).remove(listener);
- }
- }
- return false;
- }
-
- @Override
- public void onProxyClosed(String info, Exception e, SdlDisconnectedReason reason) {
- lifecycleListener.onProxyClosed(info,e,reason);
- }
-
- @Override
- public void onServiceEnded(OnServiceEnded serviceEnded) {
- lifecycleListener.onServiceEnded(serviceEnded);
-
- }
-
- @Override
- public void onServiceNACKed(OnServiceNACKed serviceNACKed) {
- lifecycleListener.onServiceNACKed(serviceNACKed);
-
- }
- @Override
- public void onError(String info, Exception e) {
- lifecycleListener.onError(info, e);
- }
-
-// @Override
-// public void onOnStreamRPC(OnStreamRPC notification) {
-// onRPCReceived(notification);
-//
-// }
-//
-// @Override
-// public void onStreamRPCResponse(StreamRPCResponse response) {
-// onRPCReceived(response);
-// }
-
- @Override
- public void onOnHMIStatus(OnHMIStatus notification) {
- onRPCReceived(notification);
- }
-
- @Override
- public void onGenericResponse(GenericResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onOnCommand(OnCommand notification) {
- onRPCReceived(notification);
- }
-
- @Override
- public void onAddCommandResponse(AddCommandResponse response) {
- onRPCReceived(response);
- }
-
- @Override
- public void onAddSubMenuResponse(AddSubMenuResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onCreateInteractionChoiceSetResponse(CreateInteractionChoiceSetResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onAlertResponse(AlertResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onDeleteCommandResponse(DeleteCommandResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onDeleteInteractionChoiceSetResponse(DeleteInteractionChoiceSetResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onDeleteSubMenuResponse(DeleteSubMenuResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onPerformInteractionResponse(PerformInteractionResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onResetGlobalPropertiesResponse(ResetGlobalPropertiesResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onSetGlobalPropertiesResponse(SetGlobalPropertiesResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onSetMediaClockTimerResponse(SetMediaClockTimerResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onShowResponse(ShowResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onSpeakResponse(SpeakResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onOnButtonEvent(OnButtonEvent notification) {
- onRPCReceived(notification);
- }
-
- @Override
- public void onOnButtonPress(OnButtonPress notification) {
- onRPCReceived(notification);
- }
-
- @Override
- public void onSubscribeButtonResponse(SubscribeButtonResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onUnsubscribeButtonResponse(UnsubscribeButtonResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onOnPermissionsChange(OnPermissionsChange notification) {
- onRPCReceived(notification);
- }
-
- @Override
- public void onSubscribeVehicleDataResponse(SubscribeVehicleDataResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onUnsubscribeVehicleDataResponse(UnsubscribeVehicleDataResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onGetVehicleDataResponse(GetVehicleDataResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onOnVehicleData(OnVehicleData notification) {
- onRPCReceived(notification);
- }
-
- @Override
- public void onPerformAudioPassThruResponse(PerformAudioPassThruResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onEndAudioPassThruResponse(EndAudioPassThruResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onOnAudioPassThru(OnAudioPassThru notification) {
- onRPCReceived(notification);
- }
-
- @Override
- public void onPutFileResponse(PutFileResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onDeleteFileResponse(DeleteFileResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onListFilesResponse(ListFilesResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onSetAppIconResponse(SetAppIconResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onScrollableMessageResponse(ScrollableMessageResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onChangeRegistrationResponse(ChangeRegistrationResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onSetDisplayLayoutResponse(SetDisplayLayoutResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onOnLanguageChange(OnLanguageChange notification) {
- onRPCReceived(notification);
- }
-
- @Override
- public void onOnHashChange(OnHashChange notification) {
- onRPCReceived(notification);
- }
-
- @Override
- public void onSliderResponse(SliderResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onOnDriverDistraction(OnDriverDistraction notification) {
- onRPCReceived(notification);
- }
-
- @Override
- public void onOnTBTClientState(OnTBTClientState notification) {
- onRPCReceived(notification);
- }
-
- @Override
- public void onOnSystemRequest(OnSystemRequest notification) {
- onRPCReceived(notification);
- }
-
- @Override
- public void onSystemRequestResponse(SystemRequestResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onOnKeyboardInput(OnKeyboardInput notification) {
- onRPCReceived(notification);
- }
-
- @Override
- public void onOnTouchEvent(OnTouchEvent notification) {
- onRPCReceived(notification);
- }
-
- @Override
- public void onDiagnosticMessageResponse(DiagnosticMessageResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onReadDIDResponse(ReadDIDResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onGetDTCsResponse(GetDTCsResponse response) {
- onRPCReceived(response);
-
- }
-
-// @Override
-// public void onOnLockScreenNotification(OnLockScreenStatus notification) {
-// onRPCReceived(notification);
-// }
-
- @Override
- public void onDialNumberResponse(DialNumberResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onSendLocationResponse(SendLocationResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onShowConstantTbtResponse(ShowConstantTbtResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onAlertManeuverResponse(AlertManeuverResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onUpdateTurnListResponse(UpdateTurnListResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onServiceDataACK(int dataSize) {
-
- }
-
- @Override
- public void onGetWayPointsResponse(GetWayPointsResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onSubscribeWayPointsResponse(SubscribeWayPointsResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onUnsubscribeWayPointsResponse(UnsubscribeWayPointsResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onOnWayPointChange(OnWayPointChange notification) {
- onRPCReceived(notification);
- }
-
- @Override
- public void onGetSystemCapabilityResponse(GetSystemCapabilityResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onGetInteriorVehicleDataResponse(GetInteriorVehicleDataResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onCreateWindowResponse(CreateWindowResponse response) {
- onRPCReceived(response);
- }
-
- @Override
- public void onDeleteWindowResponse(DeleteWindowResponse response) {
- onRPCReceived(response);
- }
-
- @Override
- public void onButtonPressResponse(ButtonPressResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onSetInteriorVehicleDataResponse(SetInteriorVehicleDataResponse response) {
- onRPCReceived(response);
-
- }
-
- @Override
- public void onOnInteriorVehicleData(OnInteriorVehicleData notification) {
- onRPCReceived(notification);
- }
-
- @Override
- public void onSendHapticDataResponse(SendHapticDataResponse response) {
- onRPCReceived(response);
- }
-
- @Override
- public void onOnRCStatus(OnRCStatus notification) {
- onRPCReceived(notification);
- }
-
- @Override
- public void onSetCloudAppProperties(SetCloudAppPropertiesResponse response) {
- onRPCReceived(response);
- }
-
- @Override
- public void onGetCloudAppProperties(GetCloudAppPropertiesResponse response) {
- onRPCReceived(response);
- }
-
- @Override
- public void onPublishAppServiceResponse(PublishAppServiceResponse response){
- onRPCReceived(response);
- }
-
- @Override
- public void onGetAppServiceDataResponse(GetAppServiceDataResponse response){
- onRPCReceived(response);
- }
-
- @Override
- public void onGetFileResponse(GetFileResponse response){
- onRPCReceived(response);
- }
-
- @Override
- public void onPerformAppServiceInteractionResponse(PerformAppServiceInteractionResponse response){
- onRPCReceived(response);
- }
-
- @Override
- public void onOnAppServiceData(OnAppServiceData notification){
- onRPCReceived(notification);
- }
-
- @Override
- public void onGetInteriorVehicleDataConsentResponse(GetInteriorVehicleDataConsentResponse response) {
- onRPCReceived(response);
- }
-
- @Override
- public void onReleaseInteriorVehicleDataModuleResponse(ReleaseInteriorVehicleDataModuleResponse response) {
- onRPCReceived(response);
- }
-
- @Override
- public void onOnSystemCapabilityUpdated(OnSystemCapabilityUpdated notification){
- onRPCReceived(notification);
- }
-
- @Override
- public void onCloseApplicationResponse(CloseApplicationResponse response) {
- onRPCReceived(response);
- }
-
- @Override
- public void onCancelInteractionResponse(CancelInteractionResponse response) {
- onRPCReceived(response);
- }
-
- @Override
- public void onShowAppMenuResponse(ShowAppMenuResponse response) {
- onRPCReceived(response);
- }
-
- @Override
- public void onUnpublishAppServiceResponse(UnpublishAppServiceResponse response) {
- onRPCReceived(response);
- }
-}
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManager.java
index 42dc6a165..f109cbe85 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManager.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManager.java
@@ -124,7 +124,7 @@ public class SdlManager extends BaseSdlManager {
// Instantiate sub managers
this.permissionManager = new PermissionManager(_internalInterface);
this.fileManager = new FileManager(_internalInterface, context, fileManagerConfig);
- if (lockScreenConfig.isEnabled()) {
+ if (lockScreenConfig.getDisplayMode() != LockScreenConfig.DISPLAY_MODE_NEVER) {
this.lockScreenManager = new LockScreenManager(lockScreenConfig, context, _internalInterface);
}
this.screenManager = new ScreenManager(_internalInterface, this.fileManager);
@@ -142,7 +142,7 @@ public class SdlManager extends BaseSdlManager {
// Start sub managers
this.permissionManager.start(subManagerListener);
this.fileManager.start(subManagerListener);
- if (lockScreenConfig.isEnabled()) {
+ if (lockScreenConfig.getDisplayMode() != LockScreenConfig.DISPLAY_MODE_NEVER) {
this.lockScreenManager.start(subManagerListener);
}
this.screenManager.start(subManagerListener);
@@ -150,19 +150,19 @@ public class SdlManager extends BaseSdlManager {
@Override
void checkState() {
- if (permissionManager != null && fileManager != null && screenManager != null && (!lockScreenConfig.isEnabled() || lockScreenManager != null)) {
- if (permissionManager.getState() == BaseSubManager.READY && fileManager.getState() == BaseSubManager.READY && screenManager.getState() == BaseSubManager.READY && (!lockScreenConfig.isEnabled() || lockScreenManager.getState() == BaseSubManager.READY)) {
+ if (permissionManager != null && fileManager != null && screenManager != null && (lockScreenConfig.getDisplayMode() == LockScreenConfig.DISPLAY_MODE_NEVER || lockScreenManager != null)) {
+ if (permissionManager.getState() == BaseSubManager.READY && fileManager.getState() == BaseSubManager.READY && screenManager.getState() == BaseSubManager.READY && (lockScreenConfig.getDisplayMode() == LockScreenConfig.DISPLAY_MODE_NEVER || lockScreenManager.getState() == BaseSubManager.READY)) {
DebugTool.logInfo(TAG, "Starting sdl manager, all sub managers are in ready state");
transitionToState(BaseSubManager.READY);
handleQueuedNotifications();
notifyDevListener(null);
onReady();
- } else if (permissionManager.getState() == BaseSubManager.ERROR && fileManager.getState() == BaseSubManager.ERROR && screenManager.getState() == BaseSubManager.ERROR && (!lockScreenConfig.isEnabled() || lockScreenManager.getState() == BaseSubManager.ERROR)) {
+ } else if (permissionManager.getState() == BaseSubManager.ERROR && fileManager.getState() == BaseSubManager.ERROR && screenManager.getState() == BaseSubManager.ERROR && (lockScreenConfig.getDisplayMode() == LockScreenConfig.DISPLAY_MODE_NEVER || lockScreenManager.getState() == BaseSubManager.ERROR)) {
String info = "ERROR starting sdl manager, all sub managers are in error state";
DebugTool.logError(TAG, info);
transitionToState(BaseSubManager.ERROR);
notifyDevListener(info);
- } else if (permissionManager.getState() == BaseSubManager.SETTING_UP || fileManager.getState() == BaseSubManager.SETTING_UP || screenManager.getState() == BaseSubManager.SETTING_UP || (lockScreenConfig.isEnabled() && lockScreenManager != null && lockScreenManager.getState() == BaseSubManager.SETTING_UP)) {
+ } else if (permissionManager.getState() == BaseSubManager.SETTING_UP || fileManager.getState() == BaseSubManager.SETTING_UP || screenManager.getState() == BaseSubManager.SETTING_UP || (lockScreenConfig.getDisplayMode() != LockScreenConfig.DISPLAY_MODE_NEVER && lockScreenManager != null && lockScreenManager.getState() == BaseSubManager.SETTING_UP)) {
DebugTool.logInfo(TAG, "SETTING UP sdl manager, some sub managers are still setting up");
transitionToState(BaseSubManager.SETTING_UP);
// No need to notify developer here!
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManagerListener.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManagerListener.java
index aa0e4f84a..8bd1f6259 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManagerListener.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/SdlManagerListener.java
@@ -61,21 +61,6 @@ public interface SdlManagerListener extends BaseSdlManagerListener{
* of LifecycleConfigurationUpdate, otherwise it should return null to indicate that the language
* is not supported.
*
- * @param language The language of the connected head unit the manager is trying to update the configuration.
- * @return An object of LifecycleConfigurationUpdate if the head unit language is supported,
- * otherwise null to indicate that the language is not supported.
- * @deprecated use {@link #managerShouldUpdateLifecycle(Language language, Language hmiLanguage)} instead
- */
- @Deprecated
- LifecycleConfigurationUpdate managerShouldUpdateLifecycle(Language language);
-
- /**
- * Called when the SDL manager detected a language mismatch. In case of a language mismatch the
- * manager should change the apps registration by updating the lifecycle configuration to the
- * specified language. If the app can support the specified language it should return an Object
- * of LifecycleConfigurationUpdate, otherwise it should return null to indicate that the language
- * is not supported.
- *
* @param language The VR+TTS language of the connected head unit the manager is trying to update the configuration.
* @param hmiLanguage The HMI display language of the connected head unit the manager is trying to update the configuration.
* @return An object of LifecycleConfigurationUpdate if the head unit language is supported,
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioStreamManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioStreamManager.java
index 38bc357b6..52b4db580 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioStreamManager.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/audio/AudioStreamManager.java
@@ -40,11 +40,13 @@ import android.os.Handler;
import android.os.Looper;
import androidx.annotation.IntDef;
import androidx.annotation.NonNull;
+import androidx.annotation.RestrictTo;
import com.smartdevicelink.SdlConnection.SdlSession;
import com.smartdevicelink.managers.CompletionListener;
import com.smartdevicelink.managers.StreamingStateMachine;
import com.smartdevicelink.managers.lifecycle.OnSystemCapabilityListener;
+import com.smartdevicelink.protocol.ProtocolMessage;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.protocol.enums.SessionType;
import com.smartdevicelink.proxy.RPCNotification;
@@ -57,10 +59,13 @@ 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.listeners.OnRPCNotificationListener;
+import com.smartdevicelink.streaming.IStreamListener;
+import com.smartdevicelink.streaming.StreamPacketizer;
import com.smartdevicelink.transport.utl.TransportRecord;
import com.smartdevicelink.util.DebugTool;
import com.smartdevicelink.util.Version;
+import java.io.IOException;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.ref.WeakReference;
@@ -91,6 +96,9 @@ public class AudioStreamManager extends BaseAudioStreamManager {
private CompletionListener serviceCompletionListener;
// As the internal interface does not provide timeout we need to use a future task
private final Handler serviceCompletionHandler;
+ private StreamPacketizer audioPacketizer;
+ private SdlSession sdlSession = null;
+ private SessionType sessionType = null;
private final Runnable serviceCompletionTimeoutCallback = new Runnable() {
@Override
@@ -106,10 +114,12 @@ public class AudioStreamManager extends BaseAudioStreamManager {
private final ISdlServiceListener serviceListener = new ISdlServiceListener() {
@Override
public void onServiceStarted(SdlSession session, SessionType type, boolean isEncrypted) {
+ sdlSession = session;
+ sessionType = type;
if (SessionType.PCM.equals(type)) {
serviceCompletionHandler.removeCallbacks(serviceCompletionTimeoutCallback);
- sdlAudioStream = session.startAudioStream();
+ sdlAudioStream = startAudioStream(session);
streamingStateMachine.transitionToState(StreamingStateMachine.STARTED);
if (serviceCompletionListener != null) {
@@ -125,7 +135,7 @@ public class AudioStreamManager extends BaseAudioStreamManager {
if (SessionType.PCM.equals(type)) {
serviceCompletionHandler.removeCallbacks(serviceCompletionTimeoutCallback);
- session.stopAudioStream();
+ stopAudioStream();
sdlAudioStream = null;
streamingStateMachine.transitionToState(StreamingStateMachine.NONE);
@@ -142,6 +152,7 @@ public class AudioStreamManager extends BaseAudioStreamManager {
if (SessionType.PCM.equals(type)) {
serviceCompletionHandler.removeCallbacks(serviceCompletionTimeoutCallback);
+ stopAudioStream();
streamingStateMachine.transitionToState(StreamingStateMachine.ERROR);
DebugTool.logError(TAG, "OnServiceError: " + reason);
streamingStateMachine.transitionToState(StreamingStateMachine.NONE);
@@ -175,6 +186,7 @@ public class AudioStreamManager extends BaseAudioStreamManager {
* Creates a new object of AudioStreamManager
* @param internalInterface The internal interface to the connected device.
*/
+ @RestrictTo(RestrictTo.Scope.LIBRARY)
public AudioStreamManager(@NonNull ISdl internalInterface, @NonNull Context context) {
super(internalInterface);
this.queue = new LinkedList<>();
@@ -208,25 +220,28 @@ public class AudioStreamManager extends BaseAudioStreamManager {
}
private void getAudioStreamingCapabilities(){
- internalInterface.getCapability(SystemCapabilityType.PCM_STREAMING, new OnSystemCapabilityListener() {
- @Override
- public void onCapabilityRetrieved(Object capability) {
- if(capability != null && capability instanceof AudioPassThruCapabilities){
- audioStreamingCapabilities = (AudioPassThruCapabilities) capability;
- checkState();
+ if (internalInterface.getSystemCapabilityManager() != null) {
+ internalInterface.getSystemCapabilityManager().getCapability(SystemCapabilityType.PCM_STREAMING, new OnSystemCapabilityListener() {
+ @Override
+ public void onCapabilityRetrieved(Object capability) {
+ if (capability != null && capability instanceof AudioPassThruCapabilities) {
+ audioStreamingCapabilities = (AudioPassThruCapabilities) capability;
+ checkState();
+ }
}
- }
- @Override
- public void onError(String info) {
- DebugTool.logError(TAG, "Error retrieving audio streaming capability: " + info);
- streamingStateMachine.transitionToState(StreamingStateMachine.ERROR);
- transitionToState(ERROR);
- }
- });
+ @Override
+ public void onError(String info) {
+ DebugTool.logError(TAG, "Error retrieving audio streaming capability: " + info);
+ streamingStateMachine.transitionToState(StreamingStateMachine.ERROR);
+ transitionToState(ERROR);
+ }
+ }, false);
+ }
}
@Override
+ @RestrictTo(RestrictTo.Scope.LIBRARY)
public void dispose() {
stopAudioStream(new CompletionListener() {
@Override
@@ -258,7 +273,10 @@ public class AudioStreamManager extends BaseAudioStreamManager {
return;
}
- AudioPassThruCapabilities capabilities = (AudioPassThruCapabilities) internalInterface.getCapability(SystemCapabilityType.PCM_STREAMING);
+ AudioPassThruCapabilities capabilities = null;
+ if (internalInterface.getSystemCapabilityManager() != null) {
+ capabilities = (AudioPassThruCapabilities) internalInterface.getSystemCapabilityManager().getCapability(SystemCapabilityType.PCM_STREAMING, null, false);
+ }
if (capabilities != null) {
switch (capabilities.getSamplingRate()) {
@@ -338,7 +356,8 @@ public class AudioStreamManager extends BaseAudioStreamManager {
streamingStateMachine.transitionToState(StreamingStateMachine.STOPPED);
serviceCompletionListener = completionListener;
serviceCompletionHandler.postDelayed(serviceCompletionTimeoutCallback, COMPLETION_TIMEOUT);
- internalInterface.stopAudioService();
+ stopAudioStream();
+ serviceListener.onServiceEnded(sdlSession, sessionType);
}
/**
@@ -490,4 +509,30 @@ public class AudioStreamManager extends BaseAudioStreamManager {
// range of ENCODING_PCM_FLOAT audio data is [-1.0, 1.0].
int FLOAT = Float.SIZE >> 3;
}
+
+ protected IAudioStreamListener startAudioStream(final SdlSession session) {
+
+ IStreamListener streamListener = new IStreamListener() {
+ @Override
+ public void sendStreamPacket(ProtocolMessage pm) {
+ session.sendMessage(pm);
+ }
+ };
+
+ try {
+ audioPacketizer = new StreamPacketizer(streamListener, null, SessionType.PCM, (byte) session.getSessionId(), session);
+ audioPacketizer.start();
+ return audioPacketizer;
+ } catch (IOException e) {
+ return null;
+ }
+ }
+
+ protected boolean stopAudioStream() {
+ if (audioPacketizer != null) {
+ audioPacketizer.stop();
+ return true;
+ }
+ return false;
+ }
}
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/file/FileManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/file/FileManager.java
index bdd21ba45..0efc3b6ff 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/file/FileManager.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/file/FileManager.java
@@ -36,6 +36,7 @@ import android.content.Context;
import android.content.res.Resources;
import android.net.Uri;
import androidx.annotation.NonNull;
+import androidx.annotation.RestrictTo;
import com.smartdevicelink.managers.file.filetypes.SdlFile;
import com.smartdevicelink.proxy.interfaces.ISdl;
@@ -65,20 +66,13 @@ public class FileManager extends BaseFileManager {
private final WeakReference<Context> context;
- @Deprecated
- public FileManager(ISdl internalInterface, Context context) {
-
- // setup
- super(internalInterface);
- this.context = new WeakReference<>(context);
- }
-
/**
* Constructor for FileManager
* @param internalInterface an instance of the ISdl interface that can be used for common SDL operations (sendRpc, addRpcListener, etc)
* @param context an instances of Context interface to global information for application
* @param fileManagerConfig an instance of the FileManagerConfig gives access to artworkRetryCount and fileRetryCount to let us if those file types can be re-upload if they fail
*/
+ @RestrictTo(RestrictTo.Scope.LIBRARY)
public FileManager(ISdl internalInterface, Context context, FileManagerConfig fileManagerConfig) {
// setup
super(internalInterface, fileManagerConfig);
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java
index 73757292b..78233dc0f 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java
@@ -48,7 +48,6 @@ import com.smartdevicelink.streaming.video.VideoStreamingParameters;
import com.smartdevicelink.transport.BaseTransportConfig;
import com.smartdevicelink.transport.MultiplexTransportConfig;
import com.smartdevicelink.transport.TCPTransportConfig;
-import com.smartdevicelink.transport.USBTransportConfig;
import com.smartdevicelink.transport.enums.TransportType;
import com.smartdevicelink.util.DebugTool;
@@ -76,22 +75,6 @@ public class LifecycleManager extends BaseLifecycleManager {
void initialize() {
super.initialize();
- //Handle legacy USB connections
- if (_transportConfig != null && TransportType.USB.equals(_transportConfig.getTransportType())) {
- //A USB transport config was provided
- USBTransportConfig usbTransportConfig = (USBTransportConfig) _transportConfig;
- if (usbTransportConfig.getUsbAccessory() == null) {
- DebugTool.logInfo(TAG,"Legacy USB transport config was used, but received null for accessory. Attempting to connect with router service");
- //The accessory was null which means it came from a router service
- MultiplexTransportConfig multiplexTransportConfig = new MultiplexTransportConfig(usbTransportConfig.getUSBContext(), appConfig.getAppID());
- multiplexTransportConfig.setRequiresHighBandwidth(true);
- multiplexTransportConfig.setSecurityLevel(MultiplexTransportConfig.FLAG_MULTI_SECURITY_OFF);
- multiplexTransportConfig.setPrimaryTransports(Collections.singletonList(TransportType.USB));
- multiplexTransportConfig.setSecondaryTransports(new ArrayList<TransportType>());
- _transportConfig = multiplexTransportConfig;
- }
- }
-
if (_transportConfig != null && _transportConfig.getTransportType().equals(TransportType.MULTIPLEX)) {
this.session = new SdlSession(sdlSessionListener, (MultiplexTransportConfig) _transportConfig);
} else if (_transportConfig != null && _transportConfig.getTransportType().equals(TransportType.TCP)) {
@@ -128,15 +111,9 @@ public class LifecycleManager extends BaseLifecycleManager {
super.setSdlSecurityStaticVars();
Context context = null;
- Service service = null;
-
if(this.contextWeakReference != null){
context = contextWeakReference.get();
}
- if (context != null && context instanceof Service) {
- service = (Service) context;
- }
- SdlSecurityBase.setAppService(service);
SdlSecurityBase.setContext(context);
}
@@ -242,25 +219,6 @@ public class LifecycleManager extends BaseLifecycleManager {
}
}
- /**
- * Closes the opened video service (serviceType 11)
- *
- * @return true if the video service is closed successfully, return false otherwise
- */
- @Override
- void endVideoStream() {
- if (session == null) {
- DebugTool.logWarning(TAG, "SdlSession is not created yet.");
- return;
- }
- if (!session.getIsConnected()) {
- DebugTool.logWarning(TAG, "Connection is not available.");
- return;
- }
-
- session.stopVideoStream();
- }
-
@Override
void startAudioService(boolean isEncrypted) {
if (session == null) {
@@ -273,23 +231,4 @@ public class LifecycleManager extends BaseLifecycleManager {
}
session.startService(SessionType.PCM, isEncrypted);
}
-
- /**
- * Closes the opened audio service (serviceType 10)
- *
- * @return true if the audio service is closed successfully, return false otherwise
- */
- @Override
- void endAudioStream() {
- if (session == null) {
- DebugTool.logWarning(TAG, "SdlSession is not created yet.");
- return;
- }
- if (!session.getIsConnected()) {
- DebugTool.logWarning(TAG, "Connection is not available.");
- return;
- }
-
- session.stopAudioStream();
- }
}
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenConfig.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenConfig.java
index 8fe3286ba..8d1e9a6c8 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenConfig.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenConfig.java
@@ -88,30 +88,6 @@ public class LockScreenConfig {
}
/**
- * If set to true, SDL will manage the showing and dismissing of the lock screen for you. <br>
- *
- * If false, you must manage the lock screen
- * @param enable boolean
- *
- * @deprecated to disable the lockscreen, use setDisplayMode with DISPLAY_MODE_NEVER instead
- */
- @Deprecated
- public void setEnabled(boolean enable){
- this.enable = enable;
- }
-
- /**
- * Gets whether the lock screen is being managed for you
- * @return boolean
- *
- * @deprecated to disable the lockscreen, use setDisplayMode with DISPLAY_MODE_NEVER instead
- */
- @Deprecated
- public boolean isEnabled() {
- return enable;
- }
-
- /**
* Set the resource int of the background color. Colors should define colors in your Colors.xml file
* @param resourceColor resource int of the color
*/
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenManager.java
index c5d567e56..06f992875 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenManager.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/lockscreen/LockScreenManager.java
@@ -38,6 +38,8 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Bitmap;
+import androidx.annotation.RestrictTo;
+
import com.smartdevicelink.managers.BaseSubManager;
import com.smartdevicelink.managers.CompletionListener;
import com.smartdevicelink.protocol.enums.FunctionID;
@@ -64,6 +66,7 @@ import java.lang.ref.WeakReference;
* The LockscreenManager handles the logic of showing and hiding the lock screen. <br>
*
*/
+@RestrictTo(RestrictTo.Scope.LIBRARY)
public class LockScreenManager extends BaseSubManager {
private static final String TAG = "LockScreenManager";
@@ -96,7 +99,7 @@ public class LockScreenManager extends BaseSubManager {
lockScreenIcon = lockScreenConfig.getAppIcon();
lockScreenColor = lockScreenConfig.getBackgroundColor();
customView = lockScreenConfig.getCustomView();
- lockScreenEnabled = lockScreenConfig.isEnabled();
+ lockScreenEnabled = lockScreenConfig.getDisplayMode() != LockScreenConfig.DISPLAY_MODE_NEVER;
deviceLogoEnabled = lockScreenConfig.isDeviceLogoEnabled();
displayMode = lockScreenConfig.getDisplayMode();
enableDismissGesture = lockScreenConfig.enableDismissGesture();
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/permission/PermissionManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/permission/PermissionManager.java
index e3a85bb1b..7430c3143 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/permission/PermissionManager.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/permission/PermissionManager.java
@@ -33,6 +33,7 @@
package com.smartdevicelink.managers.permission;
import androidx.annotation.NonNull;
+import androidx.annotation.RestrictTo;
import com.smartdevicelink.proxy.interfaces.ISdl;
@@ -51,6 +52,7 @@ import com.smartdevicelink.proxy.interfaces.ISdl;
*
* @param internalInterface
*/
+ @RestrictTo(RestrictTo.Scope.LIBRARY)
public PermissionManager(@NonNull ISdl internalInterface) {
super(internalInterface);
}
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/ScreenManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/ScreenManager.java
index 5065294a9..31c6da0b1 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/ScreenManager.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/ScreenManager.java
@@ -33,6 +33,7 @@
package com.smartdevicelink.managers.screen;
import androidx.annotation.NonNull;
+import androidx.annotation.RestrictTo;
import com.smartdevicelink.managers.file.FileManager;
import com.smartdevicelink.proxy.interfaces.ISdl;
@@ -44,6 +45,7 @@ import com.smartdevicelink.proxy.interfaces.ISdl;
*/
public class ScreenManager extends BaseScreenManager {
+ @RestrictTo(RestrictTo.Scope.LIBRARY)
public ScreenManager(@NonNull ISdl internalInterface, @NonNull FileManager fileManager) {
super(internalInterface, fileManager);
}
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/SoftButtonManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/SoftButtonManager.java
index b7a2e2958..5499d3a5a 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/SoftButtonManager.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/SoftButtonManager.java
@@ -33,6 +33,7 @@
package com.smartdevicelink.managers.screen;
import androidx.annotation.NonNull;
+import androidx.annotation.RestrictTo;
import com.smartdevicelink.managers.file.FileManager;
import com.smartdevicelink.proxy.interfaces.ISdl;
@@ -42,6 +43,7 @@ import com.smartdevicelink.proxy.interfaces.ISdl;
* SoftButtonManager gives the developer the ability to control how soft buttons are displayed on the head unit.<br>
* Note: This class must be accessed through the SdlManager->ScreenManager. Do not instantiate it by itself.<br>
*/
+@RestrictTo(RestrictTo.Scope.LIBRARY)
class SoftButtonManager extends BaseSoftButtonManager {
/**
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/SubscribeButtonManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/SubscribeButtonManager.java
index b5dafa5fd..9f08bef36 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/SubscribeButtonManager.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/SubscribeButtonManager.java
@@ -1,6 +1,8 @@
package com.smartdevicelink.managers.screen;
import androidx.annotation.NonNull;
+import androidx.annotation.RestrictTo;
+
import com.smartdevicelink.proxy.interfaces.ISdl;
/**
@@ -9,6 +11,7 @@ import com.smartdevicelink.proxy.interfaces.ISdl;
* Note: This class must be accessed through the SdlManager. Do not instantiate it by itself. <br>
*
*/
+@RestrictTo(RestrictTo.Scope.LIBRARY)
class SubscribeButtonManager extends BaseSubscribeButtonManager {
SubscribeButtonManager(@NonNull ISdl internalInterface) {
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/TextAndGraphicManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/TextAndGraphicManager.java
index 82e9a5e01..fe216ea5f 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/TextAndGraphicManager.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/TextAndGraphicManager.java
@@ -33,6 +33,7 @@
package com.smartdevicelink.managers.screen;
import androidx.annotation.NonNull;
+import androidx.annotation.RestrictTo;
import com.smartdevicelink.R;
import com.smartdevicelink.managers.file.FileManager;
@@ -46,6 +47,7 @@ import com.smartdevicelink.proxy.rpc.enums.FileType;
* Note: This class must be accessed through the SdlManager. Do not instantiate it by itself. <br>
*
*/
+@RestrictTo(RestrictTo.Scope.LIBRARY)
class TextAndGraphicManager extends BaseTextAndGraphicManager {
TextAndGraphicManager(@NonNull ISdl internalInterface, @NonNull FileManager fileManager, @NonNull SoftButtonManager softButtonManager) {
@@ -53,8 +55,8 @@ class TextAndGraphicManager extends BaseTextAndGraphicManager {
}
@Override
- SdlArtwork getBlankArtwork(){
- if (blankArtwork == null){
+ SdlArtwork getBlankArtwork() {
+ if (blankArtwork == null) {
blankArtwork = new SdlArtwork();
blankArtwork.setType(FileType.GRAPHIC_PNG);
blankArtwork.setName("blankArtwork");
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManager.java
index 32ff8c0eb..f0895fe22 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManager.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/choiceset/ChoiceSetManager.java
@@ -33,6 +33,7 @@
package com.smartdevicelink.managers.screen.choiceset;
import androidx.annotation.NonNull;
+import androidx.annotation.RestrictTo;
import com.smartdevicelink.managers.file.FileManager;
import com.smartdevicelink.proxy.interfaces.ISdl;
@@ -42,6 +43,7 @@ import com.smartdevicelink.proxy.interfaces.ISdl;
* ChoiceSetManager gives the developer the ability to control how soft choice sets are displayed on the head unit.<br>
* Note: This class must be accessed through the SdlManager->ScreenManager. Do not instantiate it by itself.<br>
*/
+@RestrictTo(RestrictTo.Scope.LIBRARY)
public class ChoiceSetManager extends BaseChoiceSetManager {
/**
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/MenuManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/MenuManager.java
index 4a28a2792..d29312cdf 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/MenuManager.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/MenuManager.java
@@ -32,6 +32,8 @@
package com.smartdevicelink.managers.screen.menu;
+import androidx.annotation.RestrictTo;
+
import com.smartdevicelink.managers.file.FileManager;
import com.smartdevicelink.proxy.interfaces.ISdl;
@@ -42,6 +44,7 @@ import com.smartdevicelink.proxy.interfaces.ISdl;
*
* The MenuManager takes MenuCell objects and creates and sends all necessary RPCs to build out a menu
*/
+@RestrictTo(RestrictTo.Scope.LIBRARY)
public class MenuManager extends BaseMenuManager {
public MenuManager(ISdl internalInterface, FileManager fileManager) {
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManager.java
index a892d3a2c..afde7404d 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManager.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/screen/menu/VoiceCommandManager.java
@@ -32,6 +32,8 @@
package com.smartdevicelink.managers.screen.menu;
+import androidx.annotation.RestrictTo;
+
import com.smartdevicelink.proxy.interfaces.ISdl;
/**
@@ -41,6 +43,7 @@ import com.smartdevicelink.proxy.interfaces.ISdl;
*
* The VoiceCommandManager takes a List of VoiceCommand objects and sets them on the Head unit for you.
*/
+@RestrictTo(RestrictTo.Scope.LIBRARY)
public class VoiceCommandManager extends BaseVoiceCommandManager {
public VoiceCommandManager(ISdl internalInterface) {
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/HapticInterfaceManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/HapticInterfaceManager.java
index f1b9fd4f3..78b6bb03b 100644
--- a/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/HapticInterfaceManager.java
+++ b/android/sdl_android/src/main/java/com/smartdevicelink/managers/video/HapticInterfaceManager.java
@@ -65,7 +65,7 @@ class HapticInterfaceManager extends BaseHapticInterfaceManager {
ISdl proxy = proxyHolder.get();
SendHapticData msg = new SendHapticData();
msg.setHapticRectData(userHapticData);
- proxy.sendRPCRequest(msg);
+ proxy.sendRPC(msg);
}
}
@@ -99,8 +99,10 @@ class HapticInterfaceManager extends BaseHapticInterfaceManager {
if (proxyHolder.get() != null) {
ISdl proxy = proxyHolder.get();
- VideoStreamingCapability videoStreamingCapability = (VideoStreamingCapability)
- proxy.getCapability(SystemCapabilityType.VIDEO_STREAMING);
+ VideoStreamingCapability videoStreamingCapability = null;
+ if (proxy.getSystemCapabilityManager() != null) {
+ videoStreamingCapability = (VideoStreamingCapability) proxy.getSystemCapabilityManager().getCapability(SystemCapabilityType.VIDEO_STREAMING, null, false);
+ }
if (videoStreamingCapability != null && videoStreamingCapability.getScale() != null) {
scale = videoStreamingCapability.getScale();
}
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 81db89049..77467f429 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
@@ -40,12 +40,15 @@ import android.view.Display;
import android.view.InputDevice;
import android.view.MotionEvent;
+import androidx.annotation.RestrictTo;
+
import com.smartdevicelink.SdlConnection.SdlSession;
import com.smartdevicelink.encoder.VirtualDisplayEncoder;
import com.smartdevicelink.managers.BaseSubManager;
import com.smartdevicelink.managers.CompletionListener;
import com.smartdevicelink.managers.StreamingStateMachine;
import com.smartdevicelink.managers.lifecycle.OnSystemCapabilityListener;
+import com.smartdevicelink.protocol.ProtocolMessage;
import com.smartdevicelink.protocol.enums.FunctionID;
import com.smartdevicelink.protocol.enums.SessionType;
import com.smartdevicelink.proxy.RPCNotification;
@@ -59,18 +62,25 @@ import com.smartdevicelink.proxy.rpc.OnTouchEvent;
import com.smartdevicelink.proxy.rpc.TouchCoord;
import com.smartdevicelink.proxy.rpc.TouchEvent;
import com.smartdevicelink.proxy.rpc.VideoStreamingCapability;
+import com.smartdevicelink.proxy.rpc.VideoStreamingFormat;
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.VideoStreamingProtocol;
import com.smartdevicelink.proxy.rpc.enums.VideoStreamingState;
import com.smartdevicelink.proxy.rpc.listeners.OnRPCNotificationListener;
+import com.smartdevicelink.streaming.AbstractPacketizer;
+import com.smartdevicelink.streaming.IStreamListener;
+import com.smartdevicelink.streaming.StreamPacketizer;
+import com.smartdevicelink.streaming.video.RTPH264Packetizer;
import com.smartdevicelink.streaming.video.SdlRemoteDisplay;
import com.smartdevicelink.streaming.video.VideoStreamingParameters;
import com.smartdevicelink.transport.utl.TransportRecord;
import com.smartdevicelink.util.DebugTool;
import com.smartdevicelink.util.Version;
+import java.io.IOException;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.List;
@@ -95,6 +105,7 @@ public class VideoStreamManager extends BaseVideoStreamManager {
private boolean isTransportAvailable = false;
private boolean hasStarted;
private String vehicleMake = null;
+ private AbstractPacketizer videoPacketizer;
// INTERNAL INTERFACES
@@ -104,7 +115,7 @@ public class VideoStreamManager extends BaseVideoStreamManager {
if(SessionType.NAV.equals(type)){
if (session != null && session.getAcceptedVideoParams() != null) {
parameters = session.getAcceptedVideoParams();
- VideoStreamManager.this.streamListener = session.startVideoStream();
+ VideoStreamManager.this.streamListener = startVideoStream(session.getAcceptedVideoParams(), session);
}
if (VideoStreamManager.this.streamListener == null) {
@@ -112,7 +123,10 @@ public class VideoStreamManager extends BaseVideoStreamManager {
stateMachine.transitionToState(StreamingStateMachine.ERROR);
return;
}
- VideoStreamingCapability capability = (VideoStreamingCapability) internalInterface.getCapability(SystemCapabilityType.VIDEO_STREAMING);
+ VideoStreamingCapability capability = null;
+ if (internalInterface.getSystemCapabilityManager() != null) {
+ capability = (VideoStreamingCapability) internalInterface.getSystemCapabilityManager().getCapability(SystemCapabilityType.VIDEO_STREAMING, null, false);
+ }
if(capability != null && Boolean.TRUE.equals(capability.getIsHapticSpatialDataSupported())){
hapticManager = new HapticInterfaceManager(internalInterface);
}
@@ -125,6 +139,7 @@ public class VideoStreamManager extends BaseVideoStreamManager {
@Override
public void onServiceEnded(SdlSession session, SessionType type) {
if(SessionType.NAV.equals(type)){
+ stopVideoStream();
if(remoteDisplay!=null){
stopStreaming();
}
@@ -136,6 +151,7 @@ public class VideoStreamManager extends BaseVideoStreamManager {
@Override
public void onServiceError(SdlSession session, SessionType type, String reason) {
DebugTool.logError(TAG, "Unable to start video service: " + reason);
+ stopVideoStream();
stateMachine.transitionToState(StreamingStateMachine.ERROR);
transitionToState(BaseSubManager.ERROR);
}
@@ -156,7 +172,7 @@ public class VideoStreamManager extends BaseVideoStreamManager {
}
checkState();
if (hasStarted && (isHMIStateVideoStreamCapable(prevOnHMIStatus)) && (!isHMIStateVideoStreamCapable(currentOnHMIStatus))) {
- internalInterface.stopVideoService();
+ stopVideoStream();
}
}
}
@@ -177,6 +193,7 @@ public class VideoStreamManager extends BaseVideoStreamManager {
};
// MANAGER APIs
+ @RestrictTo(RestrictTo.Scope.LIBRARY)
public VideoStreamManager(ISdl internalInterface){
super(internalInterface);
@@ -221,28 +238,33 @@ public class VideoStreamManager extends BaseVideoStreamManager {
private void getVideoStreamingParams(){
if(internalInterface.getProtocolVersion().getMajor() >= 5) {
- internalInterface.getCapability(SystemCapabilityType.VIDEO_STREAMING, new OnSystemCapabilityListener() {
- @Override
- public void onCapabilityRetrieved(Object capability) {
- VideoStreamingParameters params = new VideoStreamingParameters();
- params.update((VideoStreamingCapability)capability, vehicleMake); //Streaming parameters are ready time to stream
- VideoStreamManager.this.parameters = params;
+ if (internalInterface.getSystemCapabilityManager() != null) {
+ internalInterface.getSystemCapabilityManager().getCapability(SystemCapabilityType.VIDEO_STREAMING, new OnSystemCapabilityListener() {
+ @Override
+ public void onCapabilityRetrieved(Object capability) {
+ VideoStreamingParameters params = new VideoStreamingParameters();
+ params.update((VideoStreamingCapability) capability, vehicleMake); //Streaming parameters are ready time to stream
+ VideoStreamManager.this.parameters = params;
- checkState();
+ checkState();
- }
+ }
- @Override
- public void onError(String info) {
- DebugTool.logError(TAG, "Error retrieving video streaming capability: " + info);
- stateMachine.transitionToState(StreamingStateMachine.ERROR);
- transitionToState(ERROR);
- }
- });
+ @Override
+ public void onError(String info) {
+ DebugTool.logError(TAG, "Error retrieving video streaming capability: " + info);
+ stateMachine.transitionToState(StreamingStateMachine.ERROR);
+ transitionToState(ERROR);
+ }
+ }, false);
+ }
}else{
//We just use default video streaming params
VideoStreamingParameters params = new VideoStreamingParameters();
- DisplayCapabilities dispCap = (DisplayCapabilities)internalInterface.getCapability(SystemCapabilityType.DISPLAY);
+ DisplayCapabilities dispCap = null;
+ if (internalInterface.getSystemCapabilityManager() != null) {
+ dispCap = (DisplayCapabilities) internalInterface.getSystemCapabilityManager().getCapability(SystemCapabilityType.DISPLAY, null, false);
+ }
if(dispCap !=null){
params.setResolution(dispCap.getScreenParams().getImageResolution());
}
@@ -266,31 +288,37 @@ public class VideoStreamManager extends BaseVideoStreamManager {
this.context = new WeakReference<>(context);
this.remoteDisplayClass = remoteDisplayClass;
int majorProtocolVersion = internalInterface.getProtocolVersion().getMajor();
- if(majorProtocolVersion >= 5 && !internalInterface.isCapabilitySupported(SystemCapabilityType.VIDEO_STREAMING)){
+ boolean isCapabilitySupported = internalInterface.getSystemCapabilityManager() != null && internalInterface.getSystemCapabilityManager().isCapabilitySupported(SystemCapabilityType.VIDEO_STREAMING);
+ if(majorProtocolVersion >= 5 && !isCapabilitySupported){
DebugTool.logError(TAG, "Video streaming not supported on this module");
stateMachine.transitionToState(StreamingStateMachine.ERROR);
return;
}
if(parameters == null){
if(majorProtocolVersion >= 5) {
- internalInterface.getCapability(SystemCapabilityType.VIDEO_STREAMING, new OnSystemCapabilityListener() {
- @Override
- public void onCapabilityRetrieved(Object capability) {
- VideoStreamingParameters params = new VideoStreamingParameters();
- params.update((VideoStreamingCapability)capability, vehicleMake); //Streaming parameters are ready time to stream
- startStreaming(params, encrypted);
- }
+ if (internalInterface.getSystemCapabilityManager() != null) {
+ internalInterface.getSystemCapabilityManager().getCapability(SystemCapabilityType.VIDEO_STREAMING, new OnSystemCapabilityListener() {
+ @Override
+ public void onCapabilityRetrieved(Object capability) {
+ VideoStreamingParameters params = new VideoStreamingParameters();
+ params.update((VideoStreamingCapability) capability, vehicleMake); //Streaming parameters are ready time to stream
+ startStreaming(params, encrypted);
+ }
- @Override
- public void onError(String info) {
- stateMachine.transitionToState(StreamingStateMachine.ERROR);
- DebugTool.logError(TAG, "Error retrieving video streaming capability: " + info);
- }
- });
+ @Override
+ public void onError(String info) {
+ stateMachine.transitionToState(StreamingStateMachine.ERROR);
+ DebugTool.logError(TAG, "Error retrieving video streaming capability: " + info);
+ }
+ }, false);
+ }
}else{
//We just use default video streaming params
VideoStreamingParameters params = new VideoStreamingParameters();
- DisplayCapabilities dispCap = (DisplayCapabilities)internalInterface.getCapability(SystemCapabilityType.DISPLAY);
+ DisplayCapabilities dispCap = null;
+ if (internalInterface.getSystemCapabilityManager() != null) {
+ dispCap = (DisplayCapabilities) internalInterface.getSystemCapabilityManager().getCapability(SystemCapabilityType.DISPLAY, null, false);
+ }
if(dispCap !=null){
params.setResolution(dispCap.getScreenParams().getImageResolution());
}
@@ -367,6 +395,7 @@ public class VideoStreamManager extends BaseVideoStreamManager {
* Stops streaming, ends video streaming service and removes service listeners.
*/
@Override
+ @RestrictTo(RestrictTo.Scope.LIBRARY)
public void dispose(){
stopStreaming();
@@ -375,13 +404,13 @@ public class VideoStreamManager extends BaseVideoStreamManager {
parameters = null;
virtualDisplayEncoder = null;
if (internalInterface != null) {
- internalInterface.stopVideoService();
// Remove listeners
internalInterface.removeServiceListener(SessionType.NAV, serviceListener);
internalInterface.removeOnRPCNotificationListener(FunctionID.ON_TOUCH_EVENT, touchListener);
internalInterface.removeOnRPCNotificationListener(FunctionID.ON_HMI_STATUS, hmiListener);
}
+ stopVideoStream();
stateMachine.transitionToState(StreamingStateMachine.NONE);
@@ -454,14 +483,20 @@ public class VideoStreamManager extends BaseVideoStreamManager {
//Get touch scalars
ImageResolution resolution = null;
if(internalInterface.getProtocolVersion().getMajor() >= 5){ //At this point we should already have the capability
- VideoStreamingCapability capability = (VideoStreamingCapability) internalInterface.getCapability(SystemCapabilityType.VIDEO_STREAMING);
+ VideoStreamingCapability capability = null;
+ if (internalInterface.getSystemCapabilityManager() != null) {
+ capability = (VideoStreamingCapability) internalInterface.getSystemCapabilityManager().getCapability(SystemCapabilityType.VIDEO_STREAMING, null, false);
+ }
if(capability != null){
resolution = capability.getPreferredResolution();
}
}
if(resolution == null){ //Either the protocol version is too low to access video streaming caps, or they were null
- DisplayCapabilities dispCap = (DisplayCapabilities) internalInterface.getCapability(SystemCapabilityType.DISPLAY);
+ DisplayCapabilities dispCap = null;
+ if (internalInterface.getSystemCapabilityManager() != null) {
+ dispCap = (DisplayCapabilities) internalInterface.getSystemCapabilityManager().getCapability(SystemCapabilityType.DISPLAY, null, false);
+ }
if (dispCap != null) {
resolution = (dispCap.getScreenParams().getImageResolution());
}
@@ -704,4 +739,57 @@ public class VideoStreamManager extends BaseVideoStreamManager {
}
}
+ private VideoStreamingProtocol getAcceptedProtocol(VideoStreamingParameters params) {
+ if (params != null) {
+ VideoStreamingFormat format = params.getFormat();
+ if (format != null && format.getProtocol() != null) {
+ return format.getProtocol();
+ }
+ }
+ //Returns default protocol if none are found
+ return new VideoStreamingParameters().getFormat().getProtocol();
+
+ }
+
+ protected IVideoStreamListener startVideoStream(VideoStreamingParameters params, final SdlSession session) {
+ VideoStreamingProtocol protocol = getAcceptedProtocol(params);
+
+ IStreamListener iStreamListener = new IStreamListener() {
+ @Override
+ public void sendStreamPacket(ProtocolMessage pm) {
+ session.sendMessage(pm);
+ }
+ };
+
+ try {
+ switch (protocol) {
+ case RAW: {
+ videoPacketizer = new StreamPacketizer(iStreamListener, null, SessionType.NAV, (byte) session.getSessionId(), session);
+ videoPacketizer.start();
+ return (IVideoStreamListener) videoPacketizer;
+ }
+ case RTP: {
+ //FIXME why is this not an extension of StreamPacketizer?
+ videoPacketizer = new RTPH264Packetizer(iStreamListener, SessionType.NAV, (byte) session.getSessionId(), session);
+ videoPacketizer.start();
+ return (IVideoStreamListener) videoPacketizer;
+ }
+ default:
+ DebugTool.logError(TAG, "Protocol " + protocol + " is not supported.");
+ return null;
+ }
+ } catch (IOException e) {
+ return null;
+ }
+
+ }
+
+ protected boolean stopVideoStream() {
+ if (videoPacketizer != null) {
+ videoPacketizer.stop();
+ return true;
+ }
+ return false;
+ }
+
}