diff options
author | Danica Chang <danicachang@google.com> | 2010-08-20 14:22:07 -0700 |
---|---|---|
committer | Danica Chang <danicachang@google.com> | 2010-08-20 15:12:22 -0700 |
commit | 8aac82a5248e922bac2f84df746b5d1f34498f53 (patch) | |
tree | 5ab09831802aed5aa18f8ec629c867671fab54c7 /core | |
parent | 2b342f0a76f3237e97f15dc2f4e8a0b72dd7c023 (diff) | |
download | frameworks_base-8aac82a5248e922bac2f84df746b5d1f34498f53.zip frameworks_base-8aac82a5248e922bac2f84df746b5d1f34498f53.tar.gz frameworks_base-8aac82a5248e922bac2f84df746b5d1f34498f53.tar.bz2 |
Wait for bluetooth to turn on before Bluetooth Tethering is enabled
Change-Id: I3fef94ea2cb102e1bb618f85e25d60c95cea1221
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/server/BluetoothService.java | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/core/java/android/server/BluetoothService.java b/core/java/android/server/BluetoothService.java index ab78aeb..1808656 100644 --- a/core/java/android/server/BluetoothService.java +++ b/core/java/android/server/BluetoothService.java @@ -1256,12 +1256,32 @@ public class BluetoothService extends IBluetooth.Stub { return mTetheringOn; } - public synchronized void setBluetoothTethering(boolean value, String uuid, String bridge) { + private BroadcastReceiver mTetheringReceiver = null; + + public synchronized void setBluetoothTethering(boolean value, + final String uuid, final String bridge) { mTetheringOn = value; if (!value) { disconnectPan(); } - setBluetoothTetheringNative(value, uuid, bridge); + + if (getBluetoothState() != BluetoothAdapter.STATE_ON && mTetheringOn) { + IntentFilter filter = new IntentFilter(); + filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED); + mTetheringReceiver = new BroadcastReceiver() { + @Override + public synchronized void onReceive(Context context, Intent intent) { + if (intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.STATE_OFF) + == BluetoothAdapter.STATE_ON) { + setBluetoothTethering(true, uuid, bridge); + mContext.unregisterReceiver(mTetheringReceiver); + } + } + }; + mContext.registerReceiver(mTetheringReceiver, filter); + } else { + setBluetoothTetheringNative(value, uuid, bridge); + } } public synchronized int getPanDeviceState(BluetoothDevice device) { |