Pass BluetoothDevice to the Bluetooth Headset calls.
This is to support multiple headsets at the same time, atleast
at the framework level.
Change-Id: I91d05c6c2828c9a09d00806d5e79f1e9c9c7cf84
diff --git a/core/java/android/bluetooth/BluetoothHeadset.java b/core/java/android/bluetooth/BluetoothHeadset.java
index 9d633fe..4a91a8c 100644
--- a/core/java/android/bluetooth/BluetoothHeadset.java
+++ b/core/java/android/bluetooth/BluetoothHeadset.java
@@ -189,11 +189,11 @@
* @return One of the STATE_ return codes, or STATE_ERROR if this proxy
* object is currently not connected to the Headset service.
*/
- public int getState() {
+ public int getState(BluetoothDevice device) {
if (DBG) log("getState()");
if (mService != null) {
try {
- return mService.getState();
+ return mService.getState(device);
} catch (RemoteException e) {Log.e(TAG, e.toString());}
} else {
Log.w(TAG, "Proxy not attached to service");
@@ -271,11 +271,11 @@
* be made asynchornous. Returns false if this proxy object is
* not currently connected to the Headset service.
*/
- public boolean disconnectHeadset() {
+ public boolean disconnectHeadset(BluetoothDevice device) {
if (DBG) log("disconnectHeadset()");
if (mService != null) {
try {
- mService.disconnectHeadset();
+ mService.disconnectHeadset(device);
return true;
} catch (RemoteException e) {Log.e(TAG, e.toString());}
} else {
diff --git a/core/java/android/bluetooth/IBluetoothHeadset.aidl b/core/java/android/bluetooth/IBluetoothHeadset.aidl
index 57a9c06..d96f0ca 100644
--- a/core/java/android/bluetooth/IBluetoothHeadset.aidl
+++ b/core/java/android/bluetooth/IBluetoothHeadset.aidl
@@ -24,10 +24,10 @@
* {@hide}
*/
interface IBluetoothHeadset {
- int getState();
+ int getState(in BluetoothDevice device);
BluetoothDevice getCurrentHeadset();
boolean connectHeadset(in BluetoothDevice device);
- void disconnectHeadset();
+ void disconnectHeadset(in BluetoothDevice device);
boolean isConnected(in BluetoothDevice device);
boolean startVoiceRecognition();
boolean stopVoiceRecognition();
diff --git a/core/java/android/server/BluetoothService.java b/core/java/android/server/BluetoothService.java
index fc40770e..6720145 100644
--- a/core/java/android/server/BluetoothService.java
+++ b/core/java/android/server/BluetoothService.java
@@ -1858,7 +1858,7 @@
// Rather not do this from here, but no-where else and I need this
// dump
pw.println("\n--Headset Service--");
- switch (headset.getState()) {
+ switch (headset.getState(headset.getCurrentHeadset())) {
case BluetoothHeadset.STATE_DISCONNECTED:
pw.println("getState() = STATE_DISCONNECTED");
break;
diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java
index 5c278d9..bd78f93 100644
--- a/media/java/android/media/AudioService.java
+++ b/media/java/android/media/AudioService.java
@@ -1092,16 +1092,20 @@
private BluetoothHeadset.ServiceListener mBluetoothHeadsetServiceListener =
new BluetoothHeadset.ServiceListener() {
public void onServiceConnected() {
- if (mBluetoothHeadset != null &&
- mBluetoothHeadset.getState() == BluetoothHeadset.STATE_CONNECTED) {
- mBluetoothHeadsetConnected = true;
+ if (mBluetoothHeadset != null) {
+ BluetoothDevice device = mBluetoothHeadset.getCurrentHeadset();
+ if (mBluetoothHeadset.getState(device) == BluetoothHeadset.STATE_CONNECTED) {
+ mBluetoothHeadsetConnected = true;
+ }
}
}
public void onServiceDisconnected() {
- if (mBluetoothHeadset != null &&
- mBluetoothHeadset.getState() == BluetoothHeadset.STATE_DISCONNECTED) {
- mBluetoothHeadsetConnected = false;
- clearAllScoClients();
+ if (mBluetoothHeadset != null) {
+ BluetoothDevice device = mBluetoothHeadset.getCurrentHeadset();
+ if (mBluetoothHeadset.getState(device) == BluetoothHeadset.STATE_DISCONNECTED) {
+ mBluetoothHeadsetConnected = false;
+ clearAllScoClients();
+ }
}
}
};
diff --git a/wifi/java/android/net/wifi/WifiStateTracker.java b/wifi/java/android/net/wifi/WifiStateTracker.java
index 978d821..2c8be31 100644
--- a/wifi/java/android/net/wifi/WifiStateTracker.java
+++ b/wifi/java/android/net/wifi/WifiStateTracker.java
@@ -2324,7 +2324,7 @@
* @return Whether to disable coexistence mode.
*/
private boolean shouldDisableCoexistenceMode() {
- int state = mBluetoothHeadset.getState();
+ int state = mBluetoothHeadset.getState(mBluetoothHeadset.getCurrentHeadset());
return state == BluetoothHeadset.STATE_DISCONNECTED;
}
}