diff options
author | Joey Grover <joeygrover@gmail.com> | 2018-11-16 11:20:48 -0500 |
---|---|---|
committer | Joey Grover <joeygrover@gmail.com> | 2018-11-16 11:20:48 -0500 |
commit | c31b1ee44b193194c461352fef16c63010444b59 (patch) | |
tree | 5efbda42e59800aa245fd1b14e63f6b14631fd6d | |
parent | 93981e813c2ad540a3651949f48ca875f718ec2a (diff) | |
download | sdl_android-c31b1ee44b193194c461352fef16c63010444b59.tar.gz |
Fix #925
Also update the gradle file to next hotfix version
-rw-r--r-- | sdl_android/build.gradle | 4 | ||||
-rw-r--r-- | sdl_android/src/main/java/com/smartdevicelink/transport/TransportBroker.java | 67 |
2 files changed, 53 insertions, 18 deletions
diff --git a/sdl_android/build.gradle b/sdl_android/build.gradle index cf30f790f..da605fe69 100644 --- a/sdl_android/build.gradle +++ b/sdl_android/build.gradle @@ -5,8 +5,8 @@ android { defaultConfig { minSdkVersion 8 targetSdkVersion 26 - versionCode 9 - versionName "4.7.1" + versionCode 10 + versionName "4.7.2" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" resValue "string", "SDL_LIB_VERSION", '\"' + versionName + '\"' } diff --git a/sdl_android/src/main/java/com/smartdevicelink/transport/TransportBroker.java b/sdl_android/src/main/java/com/smartdevicelink/transport/TransportBroker.java index 1a88fb1b1..0bc55f347 100644 --- a/sdl_android/src/main/java/com/smartdevicelink/transport/TransportBroker.java +++ b/sdl_android/src/main/java/com/smartdevicelink/transport/TransportBroker.java @@ -59,6 +59,7 @@ import com.smartdevicelink.transport.utl.TransportRecord; import java.lang.ref.WeakReference; import java.text.SimpleDateFormat; import java.util.ArrayList; +import java.util.Collections; import java.util.Date; import java.util.List; import java.util.Locale; @@ -74,6 +75,9 @@ public class TransportBroker { private static final int MAX_MESSAGING_VERSION = 2; private static final int MIN_MESSAGING_VERSION = 1; + /** Version of the router service that supports the new additional transports (USB and TCP) */ + private static final int RS_MULTI_TRANSPORT_SUPPORT = 8; + private final String WHERE_TO_REPLY_PREFIX = "com.sdl.android."; private String appId = null; private String whereToReply = null; @@ -217,20 +221,16 @@ public class TransportBroker { // yay! we have been registered. Now what? broker.registeredWithRouterService = true; if (bundle != null) { - if (bundle.containsKey(TransportConstants.HARDWARE_CONNECTED)) { - if (bundle.containsKey(TransportConstants.CONNECTED_DEVICE_STRING_EXTRA_NAME)) { - //Keep track if we actually get this - } - //broker.onHardwareConnected(TransportType.valueOf(bundle.getString(TransportConstants.HARDWARE_CONNECTED))); - } - if (bundle.containsKey(TransportConstants.CURRENT_HARDWARE_CONNECTED)) { - ArrayList<TransportRecord> transports = bundle.getParcelableArrayList(TransportConstants.CURRENT_HARDWARE_CONNECTED); - broker.onHardwareConnected(transports); - } if (bundle.containsKey(TransportConstants.ROUTER_SERVICE_VERSION)) { broker.routerServiceVersion = bundle.getInt(TransportConstants.ROUTER_SERVICE_VERSION); } + + if (bundle.containsKey(TransportConstants.HARDWARE_CONNECTED) || bundle.containsKey(TransportConstants.CURRENT_HARDWARE_CONNECTED)) { + //A connection is already available + handleConnectionEvent(bundle, broker); + } + } break; case TransportConstants.REGISTRATION_RESPONSE_DENIED_LEGACY_MODE_ENABLED: @@ -330,12 +330,8 @@ public class TransportBroker { } if (bundle.containsKey(TransportConstants.HARDWARE_CONNECTED) || bundle.containsKey(TransportConstants.CURRENT_HARDWARE_CONNECTED)) { - //broker.onHardwareConnected(TransportType.valueOf(bundle.getString(TransportConstants.HARDWARE_CONNECTED))); - - if (bundle.containsKey(TransportConstants.CURRENT_HARDWARE_CONNECTED)) { - ArrayList<TransportRecord> transports = bundle.getParcelableArrayList(TransportConstants.CURRENT_HARDWARE_CONNECTED); - broker.onHardwareConnected(transports); - } + //This is a connection event + handleConnectionEvent(bundle,broker); break; } break; @@ -344,6 +340,45 @@ public class TransportBroker { } } + + /** + * Handle a potential connection event. This will adapt legacy router service implementaions + * into the new multiple transport scheme. + * @param bundle the received bundle from the router service + * @param broker reference to the transport broker that this handler exists + * @return if a connection event was triggered in the supplied broker + */ + private boolean handleConnectionEvent(Bundle bundle, TransportBroker broker){ + if (broker.routerServiceVersion < RS_MULTI_TRANSPORT_SUPPORT) { + //Previous versions of the router service only supports a single + //transport, so this will be the only extra received + if (bundle.containsKey(TransportConstants.HARDWARE_CONNECTED)) { + String transportName = ""; + if (bundle.containsKey(TransportConstants.CONNECTED_DEVICE_STRING_EXTRA_NAME)) { + //Keep track if we actually get this + transportName = bundle.getString(TransportConstants.CONNECTED_DEVICE_STRING_EXTRA_NAME); + } + TransportType transportType = TransportType.valueOf(bundle.getString(TransportConstants.HARDWARE_CONNECTED)); + if(transportType == null){ + transportType = TransportType.BLUETOOTH; + } + TransportRecord record = new TransportRecord(transportType,transportName); + + broker.onHardwareConnected(Collections.singletonList(record)); + return true; + } + } else{ + //Router service supports multiple transport + + if (bundle.containsKey(TransportConstants.CURRENT_HARDWARE_CONNECTED)) { + ArrayList<TransportRecord> transports = bundle.getParcelableArrayList(TransportConstants.CURRENT_HARDWARE_CONNECTED); + broker.onHardwareConnected(transports); + return true; + } + } + return false; + } + } |