diff options
| -rw-r--r-- | api/current.txt | 2 | ||||
| -rw-r--r-- | api/system-current.txt | 2 | ||||
| -rw-r--r-- | api/test-current.txt | 2 | ||||
| -rw-r--r-- | core/java/android/bluetooth/le/AdvertisingSetParameters.java | 26 | ||||
| -rw-r--r-- | core/java/android/bluetooth/le/BluetoothLeAdvertiser.java | 1 |
5 files changed, 31 insertions, 2 deletions
diff --git a/api/current.txt b/api/current.txt index 98f2cc83a718..cdaf151e2df5 100644 --- a/api/current.txt +++ b/api/current.txt @@ -7544,6 +7544,7 @@ package android.bluetooth.le { method public boolean isAnonymous(); method public boolean isConnectable(); method public boolean isLegacy(); + method public boolean isScannable(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.bluetooth.le.AdvertisingSetParameters> CREATOR; field public static final int INTERVAL_HIGH = 160; // 0xa0 @@ -7571,6 +7572,7 @@ package android.bluetooth.le { method public android.bluetooth.le.AdvertisingSetParameters.Builder setInterval(int); method public android.bluetooth.le.AdvertisingSetParameters.Builder setLegacyMode(boolean); method public android.bluetooth.le.AdvertisingSetParameters.Builder setPrimaryPhy(int); + method public android.bluetooth.le.AdvertisingSetParameters.Builder setScannable(boolean); method public android.bluetooth.le.AdvertisingSetParameters.Builder setSecondaryPhy(int); method public android.bluetooth.le.AdvertisingSetParameters.Builder setTxPowerLevel(int); } diff --git a/api/system-current.txt b/api/system-current.txt index a79c399c3182..bd9b7e8852fc 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -7848,6 +7848,7 @@ package android.bluetooth.le { method public boolean isAnonymous(); method public boolean isConnectable(); method public boolean isLegacy(); + method public boolean isScannable(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.bluetooth.le.AdvertisingSetParameters> CREATOR; field public static final int INTERVAL_HIGH = 160; // 0xa0 @@ -7875,6 +7876,7 @@ package android.bluetooth.le { method public android.bluetooth.le.AdvertisingSetParameters.Builder setInterval(int); method public android.bluetooth.le.AdvertisingSetParameters.Builder setLegacyMode(boolean); method public android.bluetooth.le.AdvertisingSetParameters.Builder setPrimaryPhy(int); + method public android.bluetooth.le.AdvertisingSetParameters.Builder setScannable(boolean); method public android.bluetooth.le.AdvertisingSetParameters.Builder setSecondaryPhy(int); method public android.bluetooth.le.AdvertisingSetParameters.Builder setTxPowerLevel(int); } diff --git a/api/test-current.txt b/api/test-current.txt index dca1aa5d49e2..081c1d8f9b66 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -7553,6 +7553,7 @@ package android.bluetooth.le { method public boolean isAnonymous(); method public boolean isConnectable(); method public boolean isLegacy(); + method public boolean isScannable(); method public void writeToParcel(android.os.Parcel, int); field public static final android.os.Parcelable.Creator<android.bluetooth.le.AdvertisingSetParameters> CREATOR; field public static final int INTERVAL_HIGH = 160; // 0xa0 @@ -7580,6 +7581,7 @@ package android.bluetooth.le { method public android.bluetooth.le.AdvertisingSetParameters.Builder setInterval(int); method public android.bluetooth.le.AdvertisingSetParameters.Builder setLegacyMode(boolean); method public android.bluetooth.le.AdvertisingSetParameters.Builder setPrimaryPhy(int); + method public android.bluetooth.le.AdvertisingSetParameters.Builder setScannable(boolean); method public android.bluetooth.le.AdvertisingSetParameters.Builder setSecondaryPhy(int); method public android.bluetooth.le.AdvertisingSetParameters.Builder setTxPowerLevel(int); } diff --git a/core/java/android/bluetooth/le/AdvertisingSetParameters.java b/core/java/android/bluetooth/le/AdvertisingSetParameters.java index 59fef8d1d1ea..fe1f425c4fc1 100644 --- a/core/java/android/bluetooth/le/AdvertisingSetParameters.java +++ b/core/java/android/bluetooth/le/AdvertisingSetParameters.java @@ -116,14 +116,16 @@ public final class AdvertisingSetParameters implements Parcelable { private final int primaryPhy; private final int secondaryPhy; private final boolean connectable; + private final boolean scannable; private final int interval; private final int txPowerLevel; - private AdvertisingSetParameters(boolean connectable, boolean isLegacy, + private AdvertisingSetParameters(boolean connectable, boolean scannable, boolean isLegacy, boolean isAnonymous, boolean includeTxPower, int primaryPhy, int secondaryPhy, int interval, int txPowerLevel) { this.connectable = connectable; + this.scannable = scannable; this.isLegacy = isLegacy; this.isAnonymous = isAnonymous; this.includeTxPower = includeTxPower; @@ -135,6 +137,7 @@ public final class AdvertisingSetParameters implements Parcelable { private AdvertisingSetParameters(Parcel in) { connectable = in.readInt() != 0 ? true : false; + scannable = in.readInt() != 0 ? true : false; isLegacy = in.readInt() != 0 ? true : false; isAnonymous = in.readInt() != 0 ? true : false; includeTxPower = in.readInt() != 0 ? true : false; @@ -150,6 +153,11 @@ public final class AdvertisingSetParameters implements Parcelable { public boolean isConnectable() { return connectable; } /** + * Returns whether the advertisement will be scannable. + */ + public boolean isScannable() { return scannable; } + + /** * Returns whether the legacy advertisement will be used. */ public boolean isLegacy() { return isLegacy; } @@ -204,6 +212,7 @@ public final class AdvertisingSetParameters implements Parcelable { @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(connectable ? 1 : 0); + dest.writeInt(scannable ? 1 : 0); dest.writeInt(isLegacy ? 1 : 0); dest.writeInt(isAnonymous ? 1 : 0); dest.writeInt(includeTxPower ? 1 : 0); @@ -232,6 +241,7 @@ public final class AdvertisingSetParameters implements Parcelable { public static final class Builder { private boolean connectable = true; + private boolean scannable = true; private boolean isLegacy = false; private boolean isAnonymous = false; private boolean includeTxPower = false; @@ -254,6 +264,18 @@ public final class AdvertisingSetParameters implements Parcelable { } /** + * Set whether the advertisement type should be scannable + * Legacy advertisements can be both connectable and scannable. Other + * advertisements can be scannable only if not connectable. + * @param scannable Controls whether the advertisment type will be + * scannable (true) or non-scannable (false). + */ + public Builder setScannable(boolean scannable) { + this.scannable = scannable; + return this; + } + + /** * When set to true, advertising set will advertise 4.x Spec compliant * advertisements. * @@ -371,7 +393,7 @@ public final class AdvertisingSetParameters implements Parcelable { * Build the {@link AdvertisingSetParameters} object. */ public AdvertisingSetParameters build() { - return new AdvertisingSetParameters(connectable, isLegacy, isAnonymous, + return new AdvertisingSetParameters(connectable, scannable, isLegacy, isAnonymous, includeTxPower, primaryPhy, secondaryPhy, interval, txPowerLevel); } diff --git a/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java b/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java index 0f35608f8522..ae012d9391e3 100644 --- a/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java +++ b/core/java/android/bluetooth/le/BluetoothLeAdvertiser.java @@ -130,6 +130,7 @@ public final class BluetoothLeAdvertiser { AdvertisingSetParameters.Builder parameters = new AdvertisingSetParameters.Builder(); parameters.setLegacyMode(true); parameters.setConnectable(isConnectable); + parameters.setScannable(true); // legacy advertisements we support are always scannable if (settings.getMode() == AdvertiseSettings.ADVERTISE_MODE_LOW_POWER) { parameters.setInterval(1600); // 1s } else if (settings.getMode() == AdvertiseSettings.ADVERTISE_MODE_BALANCED) { |