diff options
-rw-r--r-- | android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportManager.java | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportManager.java b/android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportManager.java index a3fe9c5b9..9a300fa08 100644 --- a/android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportManager.java +++ b/android/sdl_android/src/main/java/com/smartdevicelink/transport/TransportManager.java @@ -32,6 +32,7 @@ package com.smartdevicelink.transport; +import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import android.content.BroadcastReceiver; import android.content.ComponentName; @@ -413,7 +414,10 @@ public class TransportManager extends TransportManagerBase{ legacyBluetoothHandler = new LegacyBluetoothHandler(this); legacyBluetoothTransport = new MultiplexBluetoothTransport(legacyBluetoothHandler); if(contextWeakReference.get() != null){ - contextWeakReference.get().registerReceiver(legacyDisconnectReceiver,new IntentFilter(BluetoothDevice.ACTION_ACL_DISCONNECTED) ); + IntentFilter intentFilter = new IntentFilter(); + intentFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED); + intentFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); + contextWeakReference.get().registerReceiver(legacyDisconnectReceiver, intentFilter ); } }else{ new Handler().postDelayed(new Runnable() { @@ -451,8 +455,15 @@ public class TransportManager extends TransportManagerBase{ @Override public void onReceive(Context context, Intent intent) { if(intent != null){ - if(BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(intent.getAction())){ + String action = intent.getAction(); + if(BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)){ exitLegacyMode("Bluetooth disconnected"); + }else if(action.equalsIgnoreCase(BluetoothAdapter.ACTION_STATE_CHANGED)){ + int bluetoothState = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1); + if(bluetoothState == BluetoothAdapter.STATE_TURNING_OFF || bluetoothState == BluetoothAdapter.STATE_OFF){ + Log.d(TAG, "Bluetooth is shutting off, exiting legacy mode."); + exitLegacyMode("Bluetooth adapter shutting off"); + } } } } |