diff options
author | Shinichi Watanabe <swatanabe@uievolution.com> | 2018-10-16 20:30:26 +0900 |
---|---|---|
committer | Shinichi Watanabe <swatanabe@uievolution.com> | 2018-10-16 20:30:26 +0900 |
commit | edd399a4c75ca827b1c209f672af2c136292a8da (patch) | |
tree | 39d6abbd48cdd5b8ae05200e2fbaa128ac9cd644 | |
parent | f1c3b9460584253c1326e7c0b3a0e6f5575e809e (diff) | |
download | sdl_android-edd399a4c75ca827b1c209f672af2c136292a8da.tar.gz |
Found a couple of NPEs while doing Video and Audio streaming with USB connected/disconnected. Also found a NPE while performing AudioPassThough.
This commit will address them.
4 files changed, 18 insertions, 8 deletions
diff --git a/sdl_android/src/main/java/com/smartdevicelink/protocol/SdlProtocol.java b/sdl_android/src/main/java/com/smartdevicelink/protocol/SdlProtocol.java index 4ca01ac5b..e3ef707f7 100644 --- a/sdl_android/src/main/java/com/smartdevicelink/protocol/SdlProtocol.java +++ b/sdl_android/src/main/java/com/smartdevicelink/protocol/SdlProtocol.java @@ -1139,18 +1139,18 @@ public class SdlProtocol { //In the future we will actually compare the record but at this point we can assume only //a single transport record per transport. //TransportType type = disconnectedTransport.getType(); - if(disconnectedTransport.equals(getTransportForSession(SessionType.NAV))){ + if(getTransportForSession(SessionType.NAV) != null && disconnectedTransport.equals(getTransportForSession(SessionType.NAV))){ //stopVideoStream(); iSdlProtocol.stopStream(SessionType.NAV); activeTransports.remove(SessionType.NAV); } - if(disconnectedTransport.equals(getTransportForSession(SessionType.PCM))){ + if(getTransportForSession(SessionType.PCM) != null && disconnectedTransport.equals(getTransportForSession(SessionType.PCM))){ //stopAudioStream(); iSdlProtocol.stopStream(SessionType.PCM); activeTransports.remove(SessionType.PCM); } - if(disconnectedTransport.equals(getTransportForSession(SessionType.RPC))){ + if(getTransportForSession(SessionType.RPC) != null && disconnectedTransport.equals(getTransportForSession(SessionType.RPC))){ //transportTypes.remove(type); boolean primaryTransportAvailable = false; if(requestedPrimaryTransports != null && requestedPrimaryTransports.size() > 1){ diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCStruct.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCStruct.java index 2d9ab77d7..f23fac781 100644 --- a/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCStruct.java +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCStruct.java @@ -103,8 +103,10 @@ public class RPCStruct { parameters = store;
}
- for(Object value:parameters.values()){
- internalFormat(rpcVersion, value);
+ if (parameters != null) {
+ for(Object value:parameters.values()){
+ internalFormat(rpcVersion, value);
+ }
}
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java index e0674724f..c4ef3293c 100644 --- a/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java @@ -7493,7 +7493,15 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase> ImageResolution resolution = null;
if(protocolVersion!= null && protocolVersion.getMajor()>=5){ //At this point we should already have the capability
VideoStreamingCapability capability = (VideoStreamingCapability)_systemCapabilityManager.getCapability(SystemCapabilityType.VIDEO_STREAMING);
- resolution = capability.getPreferredResolution();
+ if (capability != null) {
+ resolution = capability.getPreferredResolution();
+ } else {
+ // Try fallback; though it may not be needed.
+ DisplayCapabilities dispCap = (DisplayCapabilities) _systemCapabilityManager.getCapability(SystemCapabilityType.DISPLAY);
+ if (dispCap != null) {
+ resolution = (dispCap.getScreenParams().getImageResolution());
+ }
+ }
}else {
DisplayCapabilities dispCap = (DisplayCapabilities) _systemCapabilityManager.getCapability(SystemCapabilityType.DISPLAY);
if (dispCap != null) {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/util/SdlAppInfo.java b/sdl_android/src/main/java/com/smartdevicelink/util/SdlAppInfo.java index cee0650e3..dba80d1c9 100644 --- a/sdl_android/src/main/java/com/smartdevicelink/util/SdlAppInfo.java +++ b/sdl_android/src/main/java/com/smartdevicelink/util/SdlAppInfo.java @@ -69,11 +69,11 @@ public class SdlAppInfo { Bundle metadata = resolveInfo.serviceInfo.metaData; - if(metadata.containsKey(SDL_ROUTER_VERSION_METADATA)){ + if(metadata != null && metadata.containsKey(SDL_ROUTER_VERSION_METADATA)){ this.routerServiceVersion = metadata.getInt(SDL_ROUTER_VERSION_METADATA); } - if(metadata.containsKey(SDL_CUSTOM_ROUTER_METADATA)){ + if(metadata != null && metadata.containsKey(SDL_CUSTOM_ROUTER_METADATA)){ this.isCustomRouterService = metadata.getBoolean(SDL_CUSTOM_ROUTER_METADATA); } } |