diff options
author | Julian Kast <julian@livio.com> | 2021-05-24 12:20:37 -0400 |
---|---|---|
committer | Julian Kast <julian@livio.com> | 2021-05-24 12:20:37 -0400 |
commit | f2b533b6c02f5003aea8c41ff0fd462e634072c1 (patch) | |
tree | 8f069df3b1d99f08098227ccf37491c2eadc37bb | |
parent | 76cbf367bab51ffae4a44e516c507f81762772f2 (diff) | |
parent | ad5fc1e980ff6c051daf747ec0319239d3aa2115 (diff) | |
download | sdl_android-f2b533b6c02f5003aea8c41ff0fd462e634072c1.tar.gz |
Merge branch 'develop' into bugfix/issue_1676
12 files changed, 54 insertions, 39 deletions
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java index 6f02088cc..fba01a561 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/MultiplexBluetoothTransport.java @@ -77,7 +77,8 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport { Handler timeOutHandler; Runnable socketRunnable; boolean keepSocketAlive = true; - + BluetoothDevice connectedDevice; + /** * Constructor. Prepares a new BluetoothChat session. * @@ -113,6 +114,14 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport { } /** + * A method to retrieve the currently connected bluetooth device + * @return the connected bluetooth device if connected, null otherwise. + */ + public BluetoothDevice getConnectedDevice(){ + return connectedDevice; + } + + /** * Start the chat service. Specifically start AcceptThread to begin a * session in listening (server) mode. Called by the Activity onResume() */ @@ -225,6 +234,7 @@ public class MultiplexBluetoothTransport extends MultiplexBaseTransport { //Store a static name of the device that is connected. if (device != null) { + connectedDevice = device; connectedDeviceName = device.getName(); connectedDeviceAddress = device.getAddress(); if (connectedDeviceAddress != null) { diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java index 605200ce5..c86cb6d94 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/SdlBroadcastReceiver.java @@ -275,9 +275,16 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver { DebugTool.logInfo(TAG, ": This app's package: " + myPackage); DebugTool.logInfo(TAG, ": Router service app's package: " + routerServicePackage); if (myPackage != null && myPackage.equalsIgnoreCase(routerServicePackage)) { - SdlDeviceListener sdlDeviceListener = getSdlDeviceListener(context, device); - if (!sdlDeviceListener.isRunning()) { - sdlDeviceListener.start(); + //If the device is not null the listener should start as well as the + //case where this app was installed after BT connected and is the + //only SDL app installed on the device. (Rare corner case) + if(device != null || sdlAppInfoList.size() == 1) { + SdlDeviceListener sdlDeviceListener = getSdlDeviceListener(context, device); + if (!sdlDeviceListener.isRunning()) { + sdlDeviceListener.start(); + } + } else { + DebugTool.logInfo(TAG, "Not starting device listener, bluetooth device is null and other SDL apps installed."); } } else { DebugTool.logInfo(TAG, ": Not the app to start the router service nor device listener"); diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/utl/SdlDeviceListener.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/utl/SdlDeviceListener.java index 251eb130f..23cdd9857 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/utl/SdlDeviceListener.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/utl/SdlDeviceListener.java @@ -61,7 +61,7 @@ public class SdlDeviceListener { private final WeakReference<Context> contextWeakReference; private final Callback callback; - private final BluetoothDevice connectedDevice; + private BluetoothDevice connectedDevice; private MultiplexBluetoothTransport bluetoothTransport; private TransportHandler bluetoothHandler; private Handler timeoutHandler; @@ -87,24 +87,21 @@ public class SdlDeviceListener { public void start() { if (connectedDevice == null) { DebugTool.logInfo(TAG, ": No supplied bluetooth device"); - if (callback != null) { - callback.onTransportError(null); - } - return; - } - - if (hasSDLConnected(contextWeakReference.get(), connectedDevice.getAddress())) { + } else if (hasSDLConnected(contextWeakReference.get(), connectedDevice.getAddress())) { DebugTool.logInfo(TAG, ": Confirmed SDL device, should start router service"); //This device has connected to SDL previously, it is ok to start the RS right now callback.onTransportConnected(contextWeakReference.get(), connectedDevice); return; } + synchronized (RUNNING_LOCK) { isRunning = true; // set timeout = if first time seeing BT device, 30s, if not 15s - int timeout = isFirstStatusCheck(connectedDevice.getAddress()) ? 30000 : 15000; + int timeout = connectedDevice != null && isFirstStatusCheck(connectedDevice.getAddress()) ? 30000 : 15000; //Set our preference as false for this device for now - setSDLConnectedStatus(contextWeakReference.get(), connectedDevice.getAddress(), false); + if(connectedDevice != null) { + setSDLConnectedStatus(contextWeakReference.get(), connectedDevice.getAddress(), false); + } bluetoothHandler = new TransportHandler(this); bluetoothTransport = new MultiplexBluetoothTransport(bluetoothHandler); bluetoothTransport.start(); @@ -155,6 +152,9 @@ public class SdlDeviceListener { case SdlRouterService.MESSAGE_STATE_CHANGE: switch (msg.arg1) { case MultiplexBaseTransport.STATE_CONNECTED: + if(sdlListener.connectedDevice == null) { + sdlListener.connectedDevice = sdlListener.bluetoothTransport.getConnectedDevice(); + } sdlListener.setSDLConnectedStatus(sdlListener.contextWeakReference.get(), sdlListener.connectedDevice.getAddress(), true); boolean keepConnectionOpen = sdlListener.callback.onTransportConnected(sdlListener.contextWeakReference.get(), sdlListener.connectedDevice); if (!keepConnectionOpen) { diff --git a/base/src/main/java/com/smartdevicelink/exception/SdlException.java b/base/src/main/java/com/smartdevicelink/exception/SdlException.java index e55c80334..e6afa1c88 100644 --- a/base/src/main/java/com/smartdevicelink/exception/SdlException.java +++ b/base/src/main/java/com/smartdevicelink/exception/SdlException.java @@ -71,7 +71,6 @@ public class SdlException extends Exception { }
if (detail != null) {
ret += "\nnested: " + detail.toString();
- detail.printStackTrace();
}
return ret;
}
diff --git a/base/src/main/java/com/smartdevicelink/managers/BaseSdlManager.java b/base/src/main/java/com/smartdevicelink/managers/BaseSdlManager.java index 24b0d8455..db775e10e 100644 --- a/base/src/main/java/com/smartdevicelink/managers/BaseSdlManager.java +++ b/base/src/main/java/com/smartdevicelink/managers/BaseSdlManager.java @@ -205,7 +205,7 @@ abstract class BaseSdlManager { try { DebugTool.logInfo(TAG, response.serializeJSON().toString()); } catch (JSONException e) { - e.printStackTrace(); + DebugTool.logError(TAG, "Error attempting to serialize ChangeRegistrationResponse", e); } // go through and change sdlManager properties that were changed via the LCU update diff --git a/base/src/main/java/com/smartdevicelink/managers/file/UploadFileOperation.java b/base/src/main/java/com/smartdevicelink/managers/file/UploadFileOperation.java index 820311a58..4a9b785c6 100644 --- a/base/src/main/java/com/smartdevicelink/managers/file/UploadFileOperation.java +++ b/base/src/main/java/com/smartdevicelink/managers/file/UploadFileOperation.java @@ -43,6 +43,7 @@ import com.smartdevicelink.proxy.RPCResponse; import com.smartdevicelink.proxy.rpc.PutFile; import com.smartdevicelink.proxy.rpc.PutFileResponse; import com.smartdevicelink.proxy.rpc.listeners.OnRPCResponseListener; +import com.smartdevicelink.util.DebugTool; import java.io.IOException; import java.io.InputStream; @@ -221,7 +222,7 @@ class UploadFileOperation extends Task { try { this.inputStream.close(); } catch (IOException e) { - e.printStackTrace(); + DebugTool.logError(TAG,"Error attempting to close input stream", e); } } @@ -330,7 +331,7 @@ class UploadFileOperation extends Task { try { bytesRead = inputStream.read(buffer, 0, size); } catch (IOException e) { - e.printStackTrace(); + DebugTool.logError(TAG,"Error attempting to read from input stream", e); } if (bytesRead > 0) { @@ -365,7 +366,7 @@ class UploadFileOperation extends Task { try { size = inputStream.available(); } catch (IOException e) { - e.printStackTrace(); + DebugTool.logError(TAG,"Error trying to get input stream size", e); } } return size; diff --git a/base/src/main/java/com/smartdevicelink/managers/lifecycle/BaseLifecycleManager.java b/base/src/main/java/com/smartdevicelink/managers/lifecycle/BaseLifecycleManager.java index 57cf59ff8..71cd38096 100644 --- a/base/src/main/java/com/smartdevicelink/managers/lifecycle/BaseLifecycleManager.java +++ b/base/src/main/java/com/smartdevicelink/managers/lifecycle/BaseLifecycleManager.java @@ -146,7 +146,7 @@ abstract class BaseLifecycleManager { try { session.startSession(); } catch (SdlException e) { - e.printStackTrace(); + DebugTool.logError(TAG,"Error attempting to start session", e); } } @@ -851,7 +851,7 @@ abstract class BaseLifecycleManager { session.sendMessage(pm); } catch (OutOfMemoryError e) { - e.printStackTrace(); + DebugTool.logError(TAG,"Error attempting to send RPC message.", e); } } diff --git a/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java b/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java index f39423b1a..3c409059a 100644 --- a/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java +++ b/base/src/main/java/com/smartdevicelink/managers/screen/menu/BaseMenuManager.java @@ -1275,7 +1275,7 @@ abstract class BaseMenuManager extends BaseSubManager { try { DebugTool.logInfo(TAG, "Main Menu response: " + response.serializeJSON().toString()); } catch (JSONException e) { - e.printStackTrace(); + DebugTool.logError(TAG,"Error attempting to serialize JSON of RPC response", e); } } else { DebugTool.logError(TAG, "Result: " + response.getResultCode() + " Info: " + response.getInfo()); @@ -1313,7 +1313,7 @@ abstract class BaseMenuManager extends BaseSubManager { try { DebugTool.logInfo(TAG, "Sub Menu response: " + response.serializeJSON().toString()); } catch (JSONException e) { - e.printStackTrace(); + DebugTool.logError(TAG,"Error attempting to serialize JSON of RPC response", e); } } else { DebugTool.logError(TAG, "Failed to send sub menu commands: " + response.getInfo()); @@ -1365,7 +1365,7 @@ abstract class BaseMenuManager extends BaseSubManager { try { DebugTool.logInfo(TAG, "Dynamic Sub Menu response: " + response.serializeJSON().toString()); } catch (JSONException e) { - e.printStackTrace(); + DebugTool.logError(TAG,"Error attempting to serialize JSON of RPC response", e); } } else { DebugTool.logError(TAG, "Result: " + response.getResultCode() + " Info: " + response.getInfo()); diff --git a/base/src/main/java/com/smartdevicelink/proxy/RPCStruct.java b/base/src/main/java/com/smartdevicelink/proxy/RPCStruct.java index c0dd495dd..1db39f2e9 100644 --- a/base/src/main/java/com/smartdevicelink/proxy/RPCStruct.java +++ b/base/src/main/java/com/smartdevicelink/proxy/RPCStruct.java @@ -50,6 +50,8 @@ import java.util.List; import java.util.Set;
public class RPCStruct implements Cloneable {
+ private static final String TAG = "RPCStruct";
+
public static final String KEY_BULK_DATA = "bulkData";
public static final String KEY_PROTECTED = "protected";
@@ -268,7 +270,7 @@ public class RPCStruct implements Cloneable { return customObject;
} catch (Exception e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Error attempting to format an object from a Hashtable", e);
}
} else if (obj instanceof List<?>) {
List<?> list = (List<?>) obj;
@@ -300,7 +302,7 @@ public class RPCStruct implements Cloneable { }
newList.add(customObject);
} catch (Exception e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Error attempting to format object from list of Hashtables", e);
return null;
}
}
@@ -334,15 +336,15 @@ public class RPCStruct implements Cloneable { try {
valueForString = tClass.getDeclaredMethod("valueForString", String.class);
} catch (NoSuchMethodException e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Error attempting to find valueForString method in class", e);
}
if (valueForString != null) {
try {
return valueForString.invoke(null, (String) s);
} catch (IllegalAccessException e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Illegal access while using reflection to get enum from string", e);
} catch (InvocationTargetException e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Error attempting to use method from reflection to get enum from string", e);
}
}
return null;
diff --git a/base/src/main/java/com/smartdevicelink/proxy/rpc/OnSystemRequest.java b/base/src/main/java/com/smartdevicelink/proxy/rpc/OnSystemRequest.java index c07c4e2e0..ebe24268a 100644 --- a/base/src/main/java/com/smartdevicelink/proxy/rpc/OnSystemRequest.java +++ b/base/src/main/java/com/smartdevicelink/proxy/rpc/OnSystemRequest.java @@ -179,11 +179,9 @@ public class OnSystemRequest extends RPCNotification { tempBody = getBody(httpJson);
tempHeaders = getHeaders(httpJson);
} catch (JSONException e) {
- DebugTool.logError(TAG, "HTTPRequest in bulk data was malformed.");
- e.printStackTrace();
+ DebugTool.logError(TAG, "HTTPRequest in bulk data was malformed.", e);
} catch (NullPointerException e) {
- DebugTool.logError(TAG, "Invalid HTTPRequest object in bulk data.");
- e.printStackTrace();
+ DebugTool.logError(TAG, "Invalid HTTPRequest object in bulk data.", e);
}
} else if (RequestType.HTTP.equals(this.getRequestType())) {
tempHeaders = new Headers();
@@ -209,8 +207,7 @@ public class OnSystemRequest extends RPCNotification { try {
result = httpJson.getString(KEY_BODY);
} catch (JSONException e) {
- DebugTool.logError(TAG, KEY_BODY + " key doesn't exist in bulk data.");
- e.printStackTrace();
+ DebugTool.logError(TAG, KEY_BODY + " key doesn't exist in bulk data.", e);
}
return result;
@@ -224,8 +221,7 @@ public class OnSystemRequest extends RPCNotification { Hashtable<String, Object> httpHeadersHash = JsonRPCMarshaller.deserializeJSONObject(httpHeadersJson);
result = new Headers(httpHeadersHash);
} catch (JSONException e) {
- DebugTool.logError(TAG, KEY_HEADERS + " key doesn't exist in bulk data.");
- e.printStackTrace();
+ DebugTool.logError(TAG, KEY_HEADERS + " key doesn't exist in bulk data.", e);
}
return result;
diff --git a/base/src/main/java/com/smartdevicelink/transport/SiphonServer.java b/base/src/main/java/com/smartdevicelink/transport/SiphonServer.java index cd22abc04..39871b777 100644 --- a/base/src/main/java/com/smartdevicelink/transport/SiphonServer.java +++ b/base/src/main/java/com/smartdevicelink/transport/SiphonServer.java @@ -107,7 +107,7 @@ public class SiphonServer { try {
SiphonServer.closeServer();
} catch (IOException e) {
- e.printStackTrace();
+ DebugTool.logError(TAG,"Error while trying to close siphon server", e);
}
return m_listenPort;
diff --git a/base/src/main/java/com/smartdevicelink/util/FileUtls.java b/base/src/main/java/com/smartdevicelink/util/FileUtls.java index 449fc6ea9..747052415 100644 --- a/base/src/main/java/com/smartdevicelink/util/FileUtls.java +++ b/base/src/main/java/com/smartdevicelink/util/FileUtls.java @@ -74,7 +74,7 @@ public class FileUtls { try { return Files.readAllBytes(file.toPath()); } catch (IOException e) { - e.printStackTrace(); + DebugTool.logError(TAG,"Error trying to get file data", e); } } } |