Decouple Tethering UI with registering of SDP records.
This can lead to usability issues, since the SDP record
will get registered later on.
Change-Id: Ifda78a3831572f1b9955bf06da9a8b0e949942aa
diff --git a/core/java/android/bluetooth/BluetoothPan.java b/core/java/android/bluetooth/BluetoothPan.java
index 952765d..9d0b3f2 100644
--- a/core/java/android/bluetooth/BluetoothPan.java
+++ b/core/java/android/bluetooth/BluetoothPan.java
@@ -173,9 +173,9 @@
Log.d(TAG, msg);
}
- public void setBluetoothTethering(boolean value, String uuid, String bridge) {
+ public void setBluetoothTethering(boolean value) {
try {
- mService.setBluetoothTethering(value, uuid, bridge);
+ mService.setBluetoothTethering(value);
} catch (RemoteException e) {
Log.e(TAG, "", e);
}
diff --git a/core/java/android/bluetooth/IBluetooth.aidl b/core/java/android/bluetooth/IBluetooth.aidl
index f8f678b..c4a40cd 100644
--- a/core/java/android/bluetooth/IBluetooth.aidl
+++ b/core/java/android/bluetooth/IBluetooth.aidl
@@ -83,7 +83,7 @@
int getInputDevicePriority(in BluetoothDevice device);
boolean isTetheringOn();
- void setBluetoothTethering(boolean value, String uuid, String bridge);
+ void setBluetoothTethering(boolean value);
int getPanDeviceState(in BluetoothDevice device);
BluetoothDevice[] getConnectedPanDevices();
boolean connectPanDevice(in BluetoothDevice device);
diff --git a/core/java/android/server/BluetoothEventLoop.java b/core/java/android/server/BluetoothEventLoop.java
index 9436fec..48a2b72 100644
--- a/core/java/android/server/BluetoothEventLoop.java
+++ b/core/java/android/server/BluetoothEventLoop.java
@@ -644,7 +644,8 @@
} else {
Log.i(TAG, "Rejecting incoming HID connection from " + address);
}
- } else if (BluetoothUuid.isBnep(uuid) || BluetoothUuid.isNap(uuid)){
+ } else if (BluetoothUuid.isBnep(uuid) || BluetoothUuid.isNap(uuid) &&
+ mBluetoothService.isTetheringOn()){
authorized = true;
} else {
Log.i(TAG, "Rejecting incoming " + deviceUuid + " connection from " + address);
diff --git a/core/java/android/server/BluetoothService.java b/core/java/android/server/BluetoothService.java
index fa5f156..7252736 100644
--- a/core/java/android/server/BluetoothService.java
+++ b/core/java/android/server/BluetoothService.java
@@ -352,7 +352,7 @@
}
setBluetoothState(BluetoothAdapter.STATE_TURNING_OFF);
mHandler.removeMessages(MESSAGE_REGISTER_SDP_RECORDS);
- setBluetoothTethering(false, BluetoothPan.NAP_ROLE, BluetoothPan.NAP_BRIDGE);
+ setBluetoothTetheringNative(false, BluetoothPan.NAP_ROLE, BluetoothPan.NAP_BRIDGE);
// Allow 3 seconds for profiles to gracefully disconnect
// TODO: Introduce a callback mechanism so that each profile can notify
@@ -576,8 +576,12 @@
mBondState.readAutoPairingData();
mBondState.loadBondState();
initProfileState();
+
+ //Register SDP records.
mHandler.sendMessageDelayed(
mHandler.obtainMessage(MESSAGE_REGISTER_SDP_RECORDS, 1, -1), 3000);
+ setBluetoothTetheringNative(true, BluetoothPan.NAP_ROLE, BluetoothPan.NAP_BRIDGE);
+
// Log bluetooth on to battery stats.
long ident = Binder.clearCallingIdentity();
@@ -1258,14 +1262,12 @@
private BroadcastReceiver mTetheringReceiver = null;
- public synchronized void setBluetoothTethering(boolean value,
- final String uuid, final String bridge) {
- mTetheringOn = value;
+ public synchronized void setBluetoothTethering(boolean value) {
if (!value) {
disconnectPan();
}
- if (getBluetoothState() != BluetoothAdapter.STATE_ON && mTetheringOn) {
+ if (getBluetoothState() != BluetoothAdapter.STATE_ON && value) {
IntentFilter filter = new IntentFilter();
filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
mTetheringReceiver = new BroadcastReceiver() {
@@ -1273,14 +1275,14 @@
public synchronized void onReceive(Context context, Intent intent) {
if (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.STATE_OFF)
== BluetoothAdapter.STATE_ON) {
- setBluetoothTethering(true, uuid, bridge);
+ mTetheringOn = true;
mContext.unregisterReceiver(mTetheringReceiver);
}
}
};
mContext.registerReceiver(mTetheringReceiver, filter);
} else {
- setBluetoothTetheringNative(value, uuid, bridge);
+ mTetheringOn = value;
}
}