diff options
| -rw-r--r-- | core/java/android/bluetooth/BluetoothAdapter.java | 22 | ||||
| -rw-r--r-- | core/java/android/bluetooth/IBluetooth.aidl | 1 | ||||
| -rw-r--r-- | core/java/android/bluetooth/le/BluetoothLeAdvertiser.java | 30 |
3 files changed, 12 insertions, 41 deletions
diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java index 54ead22db51f..d419d0384f5c 100644 --- a/core/java/android/bluetooth/BluetoothAdapter.java +++ b/core/java/android/bluetooth/BluetoothAdapter.java @@ -580,10 +580,6 @@ public final class BluetoothAdapter { */ public BluetoothLeAdvertiser getBluetoothLeAdvertiser() { if (!getLeAccess()) return null; - if (!isMultipleAdvertisementSupported() && !isPeripheralModeSupported()) { - Log.e(TAG, "Bluetooth LE advertising not supported"); - return null; - } synchronized(mLock) { if (sBluetoothLeAdvertiser == null) { sBluetoothLeAdvertiser = new BluetoothLeAdvertiser(mManagerService); @@ -1333,24 +1329,6 @@ public final class BluetoothAdapter { } /** - * Returns whether peripheral mode is supported. - * - * @hide - */ - public boolean isPeripheralModeSupported() { - if (getState() != STATE_ON) return false; - try { - mServiceLock.readLock().lock(); - if (mService != null) return mService.isPeripheralModeSupported(); - } catch (RemoteException e) { - Log.e(TAG, "failed to get peripheral mode capability: ", e); - } finally { - mServiceLock.readLock().unlock(); - } - return false; - } - - /** * Return true if offloaded filters are supported * * @return true if chipset supports on-chip filtering diff --git a/core/java/android/bluetooth/IBluetooth.aidl b/core/java/android/bluetooth/IBluetooth.aidl index 96a1ae8b9455..7c5458b7704b 100644 --- a/core/java/android/bluetooth/IBluetooth.aidl +++ b/core/java/android/bluetooth/IBluetooth.aidl @@ -100,7 +100,6 @@ interface IBluetooth boolean factoryReset(); boolean isMultiAdvertisementSupported(); - boolean isPeripheralModeSupported(); boolean isOffloadedFilteringSupported(); boolean isOffloadedScanBatchingSupported(); boolean isActivityAndEnergyReportingSupported(); diff --git a/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java b/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java index 26f2dea9022f..5d276623ce1c 100644 --- a/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java +++ b/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java @@ -111,12 +111,6 @@ public final class BluetoothLeAdvertiser { if (callback == null) { throw new IllegalArgumentException("callback cannot be null"); } - if (!mBluetoothAdapter.isMultipleAdvertisementSupported() && - !mBluetoothAdapter.isPeripheralModeSupported()) { - postStartFailure(callback, - AdvertiseCallback.ADVERTISE_FAILED_FEATURE_UNSUPPORTED); - return; - } boolean isConnectable = settings.isConnectable(); if (totalBytes(advertiseData, isConnectable) > MAX_ADVERTISING_DATA_BYTES || totalBytes(scanResponse, false) > MAX_ADVERTISING_DATA_BYTES) { @@ -236,9 +230,9 @@ public final class BluetoothLeAdvertiser { private final AdvertiseSettings mSettings; private final IBluetoothGatt mBluetoothGatt; - // mAdvertiserId 0: not registered - // -1: advertise stopped or registration timeout - // >0: registered and advertising started + // mAdvertiserId -1: not registered + // -2: advertise stopped or registration timeout + // >=0: registered and advertising started private int mAdvertiserId; private boolean mIsAdvertising = false; @@ -251,12 +245,12 @@ public final class BluetoothLeAdvertiser { mScanResponse = scanResponse; mSettings = settings; mBluetoothGatt = bluetoothGatt; - mAdvertiserId = 0; + mAdvertiserId = -1; } public void startRegisteration() { synchronized (this) { - if (mAdvertiserId == -1) return; + if (mAdvertiserId == -2) return; try { mBluetoothGatt.registerAdvertiser(this); @@ -264,13 +258,13 @@ public final class BluetoothLeAdvertiser { } catch (InterruptedException | RemoteException e) { Log.e(TAG, "Failed to start registeration", e); } - if (mAdvertiserId > 0 && mIsAdvertising) { + if (mAdvertiserId >= 0 && mIsAdvertising) { mLeAdvertisers.put(mAdvertiseCallback, this); - } else if (mAdvertiserId <= 0) { + } else if (mAdvertiserId < 0) { // Registration timeout, reset mClientIf to -1 so no subsequent operations can // proceed. - if (mAdvertiserId == 0) mAdvertiserId = -1; + if (mAdvertiserId == 0) mAdvertiserId = -2; // Post internal error if registration failed. postStartFailure(mAdvertiseCallback, AdvertiseCallback.ADVERTISE_FAILED_INTERNAL_ERROR); @@ -278,7 +272,7 @@ public final class BluetoothLeAdvertiser { // Unregister application if it's already registered but advertise failed. try { mBluetoothGatt.unregisterAdvertiser(mAdvertiserId); - mAdvertiserId = -1; + mAdvertiserId = -2; } catch (RemoteException e) { Log.e(TAG, "remote exception when unregistering", e); } @@ -312,7 +306,7 @@ public final class BluetoothLeAdvertiser { synchronized (this) { if (status == BluetoothGatt.GATT_SUCCESS) { try { - if (mAdvertiserId == -1) { + if (mAdvertiserId == -2) { // Registration succeeds after timeout, unregister advertiser. mBluetoothGatt.unregisterAdvertiser(advertiserId); } else { @@ -326,7 +320,7 @@ public final class BluetoothLeAdvertiser { } } // Registration failed. - mAdvertiserId = -1; + mAdvertiserId = -2; notifyAll(); } } @@ -348,7 +342,7 @@ public final class BluetoothLeAdvertiser { // unregister advertiser for stop. try { mBluetoothGatt.unregisterAdvertiser(mAdvertiserId); - mAdvertiserId = -1; + mAdvertiserId = -2; mIsAdvertising = false; mLeAdvertisers.remove(mAdvertiseCallback); } catch (RemoteException e) { |