Cache bluetooth connection state from callback
Bug: 21444506
Change-Id: Idebcc1974fdd7551645d10eea4e30d9e1133556b
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java
index ed98a159..3cc9297 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BluetoothControllerImpl.java
@@ -41,7 +41,7 @@
private final LocalBluetoothManager mLocalBluetoothManager;
private boolean mEnabled;
- private boolean mConnecting;
+ private int mConnectionState = BluetoothAdapter.STATE_DISCONNECTED;
private CachedBluetoothDevice mLastDevice;
private final H mHandler = new H();
@@ -63,7 +63,7 @@
return;
}
pw.print(" mEnabled="); pw.println(mEnabled);
- pw.print(" mConnecting="); pw.println(mConnecting);
+ pw.print(" mConnectionState="); pw.println(stateToString(mConnectionState));
pw.print(" mLastDevice="); pw.println(mLastDevice);
pw.print(" mCallbacks.size="); pw.println(mCallbacks.size());
pw.println(" Bluetooth Devices:");
@@ -73,10 +73,25 @@
}
}
+ private static String stateToString(int state) {
+ switch (state) {
+ case BluetoothAdapter.STATE_CONNECTED:
+ return "CONNECTED";
+ case BluetoothAdapter.STATE_CONNECTING:
+ return "CONNECTING";
+ case BluetoothAdapter.STATE_DISCONNECTED:
+ return "DISCONNECTED";
+ case BluetoothAdapter.STATE_DISCONNECTING:
+ return "DISCONNECTING";
+ }
+ return "UNKNOWN(" + state + ")";
+ }
+
private String getDeviceString(CachedBluetoothDevice device) {
return device.getName() + " " + device.getBondState() + " " + device.isConnected();
}
+ @Override
public void addStateChangedCallback(Callback cb) {
mCallbacks.add(cb);
mHandler.sendEmptyMessage(H.MSG_STATE_CHANGED);
@@ -94,14 +109,12 @@
@Override
public boolean isBluetoothConnected() {
- return mLocalBluetoothManager != null
- && mLocalBluetoothManager.getBluetoothAdapter().getConnectionState()
- == BluetoothAdapter.STATE_CONNECTED;
+ return mConnectionState == BluetoothAdapter.STATE_CONNECTED;
}
@Override
public boolean isBluetoothConnecting() {
- return mConnecting;
+ return mConnectionState == BluetoothAdapter.STATE_CONNECTING;
}
@Override
@@ -190,7 +203,7 @@
@Override
public void onConnectionStateChanged(CachedBluetoothDevice cachedDevice, int state) {
- mConnecting = state == BluetoothAdapter.STATE_CONNECTING;
+ mConnectionState = state;
mLastDevice = cachedDevice;
updateConnected();
mHandler.sendEmptyMessage(H.MSG_STATE_CHANGED);
@@ -225,7 +238,7 @@
}
private void fireStateChange(BluetoothController.Callback cb) {
- cb.onBluetoothStateChange(mEnabled, mConnecting);
+ cb.onBluetoothStateChange(mEnabled);
}
}
}