diff options
author | Bilal Alsharifi <599206+bilal-alsharifi@users.noreply.github.com> | 2019-04-12 15:36:03 -0400 |
---|---|---|
committer | Joey Grover <joeygrover@gmail.com> | 2019-04-12 15:36:03 -0400 |
commit | ab53729a4c7f200644c2769b98fc3b34df201ab9 (patch) | |
tree | eb4d1123bc8f2a2428f1d50c0beb27b3e204120a | |
parent | 02d22038a57cbe9188ebb621d711b778d0141f27 (diff) | |
download | sdl_android-ab53729a4c7f200644c2769b98fc3b34df201ab9.tar.gz |
Fix issue in PLAY_PAUSE button handling (#1038)
* Fix Play_Pause button issue in Android
* Move handling Play_Pause to sendRPCMessagePrivate
* Fix Play_Pause button issue in javaSE
* Put all sendRPCMessagePrivate logic in try/catch block
* Add null check in sendRPCMessagePrivate
* Fix spacing issue
* Remove unnecessary check for null
* Add null check for rpcSpecVersion
-rw-r--r-- | android/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java | 61 | ||||
-rw-r--r-- | javaSE/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java | 42 |
2 files changed, 71 insertions, 32 deletions
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java b/android/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java index 25c6b06a1..1cabf9b89 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java @@ -2098,6 +2098,36 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase> try {
SdlTrace.logRPCEvent(InterfaceActivityDirection.Transmit, message, SDL_LIB_TRACE_KEY);
+ //FIXME this is temporary until the next major release of the library where OK is removed
+ if (message.getMessageType().equals(RPCMessage.KEY_REQUEST)) {
+ RPCRequest request = (RPCRequest) message;
+ if (FunctionID.SUBSCRIBE_BUTTON.toString().equals(request.getFunctionName())
+ || FunctionID.UNSUBSCRIBE_BUTTON.toString().equals(request.getFunctionName())
+ || FunctionID.BUTTON_PRESS.toString().equals(request.getFunctionName())) {
+
+ ButtonName buttonName = (ButtonName) request.getObject(ButtonName.class, SubscribeButton.KEY_BUTTON_NAME);
+
+
+ if (rpcSpecVersion != null) {
+ if (rpcSpecVersion.getMajor() < 5) {
+
+ if (ButtonName.PLAY_PAUSE.equals(buttonName)) {
+ request.setParameters(SubscribeButton.KEY_BUTTON_NAME, ButtonName.OK);
+ }
+ } else { //Newer than version 5.0.0
+ if (ButtonName.OK.equals(buttonName)) {
+ RPCRequest request2 = new RPCRequest(request);
+ request2.setParameters(SubscribeButton.KEY_BUTTON_NAME, ButtonName.PLAY_PAUSE);
+ request2.setOnRPCResponseListener(request.getOnRPCResponseListener());
+ sendRPCMessagePrivate(request2);
+ return;
+ }
+ }
+ }
+
+ }
+ }
+
message.format(rpcSpecVersion,true);
byte[] msgBytes = JsonRPCMarshaller.marshall(message, (byte)getProtocolVersion().getMajor());
@@ -3848,6 +3878,7 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase> _proxyListener.onOnButtonPress(msg);
onRPCNotificationReceived(msg);
if(onButtonPressCompat != null){
+ onRPCNotificationReceived(onButtonPressCompat);
_proxyListener.onOnButtonPress(onButtonPressCompat);
}
}
@@ -3856,6 +3887,7 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase> _proxyListener.onOnButtonPress(msg);
onRPCNotificationReceived(msg);
if(onButtonPressCompat != null){
+ onRPCNotificationReceived(onButtonPressCompat);
_proxyListener.onOnButtonPress(onButtonPressCompat);
}
}
@@ -3874,6 +3906,7 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase> _proxyListener.onOnButtonEvent(msg);
onRPCNotificationReceived(msg);
if(onButtonEventCompat != null){
+ onRPCNotificationReceived(onButtonEventCompat);
_proxyListener.onOnButtonEvent(onButtonEventCompat);
}
}
@@ -3882,6 +3915,7 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase> _proxyListener.onOnButtonEvent(msg);
onRPCNotificationReceived(msg);
if(onButtonEventCompat != null){
+ onRPCNotificationReceived(onButtonEventCompat);
_proxyListener.onOnButtonEvent(onButtonEventCompat);
}
}
@@ -4435,33 +4469,6 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase> }
}
- //FIXME this is temporary until the next major release of the library where OK is removed
-
- if (message.getMessageType().equals(RPCMessage.KEY_REQUEST)) {
- RPCRequest request = (RPCRequest) message;
- if(FunctionID.SUBSCRIBE_BUTTON.toString().equals(request.getFunctionName())
- || FunctionID.UNSUBSCRIBE_BUTTON.toString().equals(request.getFunctionName())
- || FunctionID.BUTTON_PRESS.toString().equals(request.getFunctionName())) {
-
- ButtonName buttonName = (ButtonName) request.getObject(ButtonName.class, SubscribeButton.KEY_BUTTON_NAME);
-
- if (rpcSpecVersion != null && rpcSpecVersion.getMajor() < 5) {
-
- if (ButtonName.PLAY_PAUSE.equals(buttonName)) {
- request.setParameters(SubscribeButton.KEY_BUTTON_NAME, ButtonName.OK);
- }
- } else { //Newer than version 5.0.0
- if (ButtonName.OK.equals(buttonName)) {
- RPCRequest request2 = new RPCRequest(request);
- request2.setParameters(SubscribeButton.KEY_BUTTON_NAME, ButtonName.PLAY_PAUSE);
- request2.setOnRPCResponseListener(request.getOnRPCResponseListener());
- sendRPCMessagePrivate(request2);
- return;
- }
- }
- }
- }
-
sendRPCMessagePrivate(message);
}
diff --git a/javaSE/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java b/javaSE/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java index 2a6857c0f..9c7b1d092 100644 --- a/javaSE/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java +++ b/javaSE/src/main/java/com/smartdevicelink/managers/lifecycle/LifecycleManager.java @@ -643,6 +643,36 @@ public class LifecycleManager extends BaseLifecycleManager { private void sendRPCMessagePrivate(RPCMessage message){ try { + //FIXME this is temporary until the next major release of the library where OK is removed + if (message.getMessageType().equals(RPCMessage.KEY_REQUEST)) { + RPCRequest request = (RPCRequest) message; + if(FunctionID.SUBSCRIBE_BUTTON.toString().equals(request.getFunctionName()) + || FunctionID.UNSUBSCRIBE_BUTTON.toString().equals(request.getFunctionName()) + || FunctionID.BUTTON_PRESS.toString().equals(request.getFunctionName())) { + + ButtonName buttonName = (ButtonName) request.getObject(ButtonName.class, SubscribeButton.KEY_BUTTON_NAME); + + + if (rpcSpecVersion != null) { + if (rpcSpecVersion.getMajor() < 5) { + + if (ButtonName.PLAY_PAUSE.equals(buttonName)) { + request.setParameters(SubscribeButton.KEY_BUTTON_NAME, ButtonName.OK); + } + } else { //Newer than version 5.0.0 + if (ButtonName.OK.equals(buttonName)) { + RPCRequest request2 = new RPCRequest(request); + request2.setParameters(SubscribeButton.KEY_BUTTON_NAME, ButtonName.PLAY_PAUSE); + request2.setOnRPCResponseListener(request.getOnRPCResponseListener()); + sendRPCMessagePrivate(request2); + return; + } + } + } + + } + } + message.format(rpcSpecVersion,true); byte[] msgBytes = JsonRPCMarshaller.marshall(message, (byte)getProtocolVersion().getMajor()); @@ -742,11 +772,6 @@ public class LifecycleManager extends BaseLifecycleManager { rpc.format(rpcSpecVersion, true); - FunctionID functionID = rpc.getFunctionID(); - if (functionID != null && (functionID.equals(FunctionID.ON_BUTTON_PRESS.toString()) || functionID.equals(FunctionID.ON_BUTTON_EVENT.toString()))) { - rpc = handleButtonNotificationFormatting(rpc); - } - onRPCReceived(rpc); if (RPCMessage.KEY_RESPONSE.equals(messageType)) { @@ -754,6 +779,13 @@ public class LifecycleManager extends BaseLifecycleManager { onRPCResponseReceived((RPCResponse) rpc); } else if (RPCMessage.KEY_NOTIFICATION.equals(messageType)) { + FunctionID functionID = rpc.getFunctionID(); + if (functionID != null && (functionID.equals(FunctionID.ON_BUTTON_PRESS)) || functionID.equals(FunctionID.ON_BUTTON_EVENT)) { + RPCNotification notificationCompat = handleButtonNotificationFormatting(rpc); + if(notificationCompat != null){ + onRPCNotificationReceived((notificationCompat)); + } + } onRPCNotificationReceived((RPCNotification) rpc); |