summaryrefslogtreecommitdiffstats
path: root/core/java/android/bluetooth
diff options
context:
space:
mode:
authorPrerepa Viswanadham <dham@google.com>2014-07-29 13:42:30 -0700
committerPrerepa Viswanadham <dham@google.com>2014-07-29 21:06:29 +0000
commitf6b3d8ca364f3008730741258ceb07c7039a5528 (patch)
tree48539a8d81ec041ff4fa734b6672e52cdcbf8391 /core/java/android/bluetooth
parent0615026ba15d7d7a68d0a191d449da47a1ceabea (diff)
downloadframeworks_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.java10
-rw-r--r--core/java/android/bluetooth/le/BluetoothLeScanner.java11
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