summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoey Grover <joeygrover@gmail.com>2016-03-21 17:21:43 -0400
committerJoey Grover <joeygrover@gmail.com>2016-03-21 17:21:43 -0400
commit44ffcee386f345e0307d6a7fe17d585de4c32057 (patch)
tree46db1a135966d90339ff9845d4be6317b5e46455
parentbb4e42585d4df858ac95df41b194941df5f00b7d (diff)
downloadsdl_android-44ffcee386f345e0307d6a7fe17d585de4c32057.tar.gz
Clean up and add wake up call during transport check
This check will fix the corner case where no SDL apps are installed, bluetooth is on, connected to head unit, then SDL app is installed where no app was showing until ignition cycle or bluetooth d/c or power cycle.
-rw-r--r--sdl_android_lib/src/com/smartdevicelink/transport/RouterServiceValidator.java2
-rw-r--r--sdl_android_lib/src/com/smartdevicelink/transport/SdlBroadcastReceiver.java11
-rw-r--r--sdl_android_lib/src/com/smartdevicelink/transport/SdlRouterService.java15
-rw-r--r--sdl_android_lib/src/com/smartdevicelink/transport/TransportConstants.java4
4 files changed, 15 insertions, 17 deletions
diff --git a/sdl_android_lib/src/com/smartdevicelink/transport/RouterServiceValidator.java b/sdl_android_lib/src/com/smartdevicelink/transport/RouterServiceValidator.java
index 5e0f47862..df6dd948f 100644
--- a/sdl_android_lib/src/com/smartdevicelink/transport/RouterServiceValidator.java
+++ b/sdl_android_lib/src/com/smartdevicelink/transport/RouterServiceValidator.java
@@ -147,7 +147,7 @@ public class RouterServiceValidator {
*/
private void wakeUpRouterServices(){
if(BluetoothAdapter.getDefaultAdapter()!=null && BluetoothAdapter.getDefaultAdapter().isEnabled()){
- Intent intent = new Intent(SdlRouterService.START_ROUTER_SERVICE_ACTION);
+ Intent intent = new Intent(TransportConstants.START_ROUTER_SERVICE_ACTION);
intent.putExtra(TransportConstants.PING_ROUTER_SERVICE_EXTRA, true);
context.sendBroadcast(intent);
}
diff --git a/sdl_android_lib/src/com/smartdevicelink/transport/SdlBroadcastReceiver.java b/sdl_android_lib/src/com/smartdevicelink/transport/SdlBroadcastReceiver.java
index 943369ce4..6b95a7572 100644
--- a/sdl_android_lib/src/com/smartdevicelink/transport/SdlBroadcastReceiver.java
+++ b/sdl_android_lib/src/com/smartdevicelink/transport/SdlBroadcastReceiver.java
@@ -19,7 +19,6 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{
private static final String BOOT_COMPLETE = "android.intent.action.BOOT_COMPLETED";
private static final String ACL_CONNECTED = "android.bluetooth.device.action.ACL_CONNECTED";
private static final String STATE_CHANGED = "android.bluetooth.adapter.action.STATE_CHANGED" ;
- private static final String START_SERVICE = "sdl.router.startservice";
protected static final String SDL_ROUTER_SERVICE_CLASS_NAME = "sdlrouterservice";
@@ -58,7 +57,7 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{
if(!(action.equalsIgnoreCase(BOOT_COMPLETE)
|| action.equalsIgnoreCase(ACL_CONNECTED)
|| action.equalsIgnoreCase(STATE_CHANGED)
- || action.equalsIgnoreCase(START_SERVICE))){
+ || action.equalsIgnoreCase(TransportConstants.START_ROUTER_SERVICE_ACTION))){
//We don't want anything else here if the child class called super and has different intent filters
//Log.i(TAG, "Unwanted intent from child class");
return;
@@ -68,7 +67,7 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{
localRouterClass = defineLocalSdlRouterClass();
//This will only be true if we are being told to reopen our SDL service because SDL is enabled
- if(action.contains(TransportConstants.START_ROUTER_SERVICE_ACTION_SUFFIX)){ //TODO make sure this works with only the suffix
+ if(action.equalsIgnoreCase(TransportConstants.START_ROUTER_SERVICE_ACTION)){
if(intent.hasExtra(TransportConstants.START_ROUTER_SERVICE_SDL_ENABLED_EXTRA)){
if(intent.getBooleanExtra(TransportConstants.START_ROUTER_SERVICE_SDL_ENABLED_EXTRA, false)){
String packageName = intent.getStringExtra(TransportConstants.START_ROUTER_SERVICE_SDL_ENABLED_APP_PACKAGE);
@@ -224,6 +223,12 @@ public abstract class SdlBroadcastReceiver extends BroadcastReceiver{
}else{
Log.w(TAG, "Router service isn't running, returning false.");
+ if(BluetoothAdapter.getDefaultAdapter()!=null && BluetoothAdapter.getDefaultAdapter().isEnabled()){
+ Intent serviceIntent = new Intent();
+ serviceIntent.setAction(TransportConstants.START_ROUTER_SERVICE_ACTION);
+ serviceIntent.putExtra(TransportConstants.PING_ROUTER_SERVICE_EXTRA, true);
+ context.sendBroadcast(serviceIntent);
+ }
}
return false;
diff --git a/sdl_android_lib/src/com/smartdevicelink/transport/SdlRouterService.java b/sdl_android_lib/src/com/smartdevicelink/transport/SdlRouterService.java
index 46efb1322..6b21cce26 100644
--- a/sdl_android_lib/src/com/smartdevicelink/transport/SdlRouterService.java
+++ b/sdl_android_lib/src/com/smartdevicelink/transport/SdlRouterService.java
@@ -4,7 +4,7 @@ import static com.smartdevicelink.transport.TransportConstants.CONNECTED_DEVICE_
import static com.smartdevicelink.transport.TransportConstants.FORMED_PACKET_EXTRA_NAME;
import static com.smartdevicelink.transport.TransportConstants.HARDWARE_DISCONNECTED;
import static com.smartdevicelink.transport.TransportConstants.SEND_PACKET_TO_APP_LOCATION_EXTRA_NAME;
-import static com.smartdevicelink.transport.TransportConstants.WAKE_UP_BLUETOOTH_SERVICE_INTENT;
+
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
@@ -13,8 +13,10 @@ import java.util.Set;
import java.util.Vector;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+
import org.json.JSONException;
import org.json.JSONObject;
+
import android.annotation.SuppressLint;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningAppProcessInfo;
@@ -42,6 +44,7 @@ import android.os.RemoteException;
import android.util.Log;
import android.util.SparseArray;
import android.widget.Toast;
+
import com.smartdevicelink.R;
import com.smartdevicelink.marshal.JsonRPCMarshaller;
import com.smartdevicelink.protocol.BinaryFrameHeader;
@@ -78,7 +81,6 @@ public class SdlRouterService extends Service{
private static final int FOREGROUND_SERVICE_ID = 849;
- public static final String START_ROUTER_SERVICE_ACTION = "sdl.router"+ TransportConstants.START_ROUTER_SERVICE_ACTION_SUFFIX;
public static final String REGISTER_NEWER_SERVER_INSTANCE_ACTION = "com.sdl.android.newservice";
public static final String START_SERVICE_ACTION = "sdl.router.startservice";
public static final String REGISTER_WITH_ROUTER_ACTION = "com.sdl.android.register";
@@ -947,7 +949,7 @@ public class SdlRouterService extends Service{
Intent unregisterIntent = new Intent();
unregisterIntent.putExtra(HARDWARE_DISCONNECTED, type.name());
unregisterIntent.putExtra(TransportConstants.ENABLE_LEGACY_MODE_EXTRA, legacyModeEnabled);
- unregisterIntent.setAction(TransportConstants.START_ROUTER_SERVICE_ACTION_SUFFIX);
+ unregisterIntent.setAction(TransportConstants.START_ROUTER_SERVICE_ACTION);
sendBroadcast(unregisterIntent);
//return;
}else{
@@ -1294,13 +1296,6 @@ public class SdlRouterService extends Service{
return false;
}
- /**
- * This method will make sure a copy of the Router Service is up and running so
- * the SDL enabled apps will be ready for a connection.
- */
- public static void wakeUpBluetoothService(Context context){
- context.sendOrderedBroadcast(new Intent(WAKE_UP_BLUETOOTH_SERVICE_INTENT),null);
- }
//**************************************************************************************************************************************
//********************************************************* PREFERENCES ****************************************************************
diff --git a/sdl_android_lib/src/com/smartdevicelink/transport/TransportConstants.java b/sdl_android_lib/src/com/smartdevicelink/transport/TransportConstants.java
index 6a30185bd..29432daad 100644
--- a/sdl_android_lib/src/com/smartdevicelink/transport/TransportConstants.java
+++ b/sdl_android_lib/src/com/smartdevicelink/transport/TransportConstants.java
@@ -9,13 +9,11 @@ package com.smartdevicelink.transport;
*
*/
public class TransportConstants {
- public static final String WAKE_UP_BLUETOOTH_SERVICE_INTENT ="sdl.bluetooth.startservice";
- //protected static final String REQUEST_BT_CLIENT_CONNECT = "com.sdl.android.requestBtClientConnect";
+ public static final String START_ROUTER_SERVICE_ACTION ="sdl.router.startservice";
public static final String UNREGISTER_WITH_ROUTER_ACTION = "com.sdl.android.unregister";
public static final String SEND_PACKET_ACTION = "com.sdl.android.sendpacket";
public static final String SEND__GLOBAL_PACKET_ACTION = "com.sdl.android.sendglobalpacket";
- public static final String START_ROUTER_SERVICE_ACTION_SUFFIX = ".startservice";
public static final String BIND_LOCATION_PACKAGE_NAME_EXTRA = "BIND_LOCATION_PACKAGE_NAME_EXTRA";
public static final String BIND_LOCATION_CLASS_NAME_EXTRA = "BIND_LOCATION_CLASS_NAME_EXTRA";