diff options
author | Prerepa Viswanadham <dham@google.com> | 2014-07-29 13:42:30 -0700 |
---|---|---|
committer | Prerepa Viswanadham <dham@google.com> | 2014-07-29 21:06:29 +0000 |
commit | f6b3d8ca364f3008730741258ceb07c7039a5528 (patch) | |
tree | 48539a8d81ec041ff4fa734b6672e52cdcbf8391 /core/java/android/bluetooth | |
parent | 0615026ba15d7d7a68d0a191d449da47a1ceabea (diff) | |
download | frameworks_base-f6b3d8ca364f3008730741258ceb07c7039a5528.zip frameworks_base-f6b3d8ca364f3008730741258ceb07c7039a5528.tar.gz frameworks_base-f6b3d8ca364f3008730741258ceb07c7039a5528.tar.bz2 |
Fix crash in Stopping/Starting BLE advertising after
BluetoothAdapter cycling
Bug 16528460
Change-Id: Iad852bc93d307c5ca5f7e42f24248aa02c105e8a
Diffstat (limited to 'core/java/android/bluetooth')
-rw-r--r-- | core/java/android/bluetooth/le/BluetoothLeAdvertiser.java | 10 | ||||
-rw-r--r-- | core/java/android/bluetooth/le/BluetoothLeScanner.java | 11 |
2 files changed, 20 insertions, 1 deletions
diff --git a/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java b/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java index 93d4349..4d128e7 100644 --- a/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java +++ b/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java @@ -107,6 +107,7 @@ public final class BluetoothLeAdvertiser { public void startAdvertising(AdvertiseSettings settings, AdvertiseData advertiseData, AdvertiseData scanResponse, final AdvertiseCallback callback) { + checkAdapterState(); if (callback == null) { throw new IllegalArgumentException("callback cannot be null"); } @@ -153,13 +154,13 @@ public final class BluetoothLeAdvertiser { * @param callback {@link AdvertiseCallback} identifies the advertising instance to stop. */ public void stopAdvertising(final AdvertiseCallback callback) { + checkAdapterState(); if (callback == null) { throw new IllegalArgumentException("callback cannot be null"); } AdvertiseCallbackWrapper wrapper = mLeAdvertisers.get(callback); if (wrapper == null) return; - try { IBluetoothGatt gatt = mBluetoothManager.getBluetoothGatt(); if (gatt != null) @@ -459,6 +460,13 @@ public final class BluetoothLeAdvertiser { } } + //TODO: move this api to a common util class. + private void checkAdapterState() { + if (mBluetoothAdapter.getState() != mBluetoothAdapter.STATE_ON) { + throw new IllegalStateException("BT Adapter is not turned ON"); + } + } + private void postCallbackFailure(final AdvertiseCallback callback, final int error) { mHandler.post(new Runnable() { @Override diff --git a/core/java/android/bluetooth/le/BluetoothLeScanner.java b/core/java/android/bluetooth/le/BluetoothLeScanner.java index 8e7d400..f100ddc 100644 --- a/core/java/android/bluetooth/le/BluetoothLeScanner.java +++ b/core/java/android/bluetooth/le/BluetoothLeScanner.java @@ -80,6 +80,7 @@ public final class BluetoothLeScanner { * @throws IllegalArgumentException If {@code callback} is null. */ public void startScan(final ScanCallback callback) { + checkAdapterState(); if (callback == null) { throw new IllegalArgumentException("callback is null"); } @@ -98,6 +99,7 @@ public final class BluetoothLeScanner { */ public void startScan(List<ScanFilter> filters, ScanSettings settings, final ScanCallback callback) { + checkAdapterState(); if (settings == null || callback == null) { throw new IllegalArgumentException("settings or callback is null"); } @@ -148,6 +150,7 @@ public final class BluetoothLeScanner { * @param callback */ public void stopScan(ScanCallback callback) { + checkAdapterState(); synchronized (mLeScanClients) { BleScanCallbackWrapper wrapper = mLeScanClients.remove(callback); if (wrapper == null) { @@ -167,6 +170,7 @@ public final class BluetoothLeScanner { * used to start scan. */ public void flushPendingScanResults(ScanCallback callback) { + checkAdapterState(); if (callback == null) { throw new IllegalArgumentException("callback cannot be null!"); } @@ -445,6 +449,13 @@ public final class BluetoothLeScanner { } } + //TODO: move this api to a common util class. + private void checkAdapterState() { + if (mBluetoothAdapter.getState() != mBluetoothAdapter.STATE_ON) { + throw new IllegalStateException("BT Adapter is not turned ON"); + } + } + private void postCallbackError(final ScanCallback callback, final int errorCode) { mHandler.post(new Runnable() { @Override |