Unhide AdvertiseSettings
Bug: 242015785
Test: ./gradlew updateApi
Relnote: Add AdvertiseSettings into bluetooth-core
Change-Id: I8045c8fe1986f4b1885acc6fc035d4c833705199
diff --git a/bluetooth/bluetooth-core/api/current.txt b/bluetooth/bluetooth-core/api/current.txt
index 21a003a92..7161d63 100644
--- a/bluetooth/bluetooth-core/api/current.txt
+++ b/bluetooth/bluetooth-core/api/current.txt
@@ -1,6 +1,29 @@
// Signature format: 4.0
package androidx.bluetooth.core {
+ public final class AdvertiseSettings {
+ ctor public AdvertiseSettings(optional int advertiseMode, optional int advertiseTxPowerLevel, optional boolean advertiseConnectable, optional int advertiseTimeoutMillis);
+ method public boolean getAdvertiseConnectable();
+ method public int getAdvertiseMode();
+ method public int getAdvertiseTimeoutMillis();
+ method public int getAdvertiseTxPowerLevel();
+ property public final boolean advertiseConnectable;
+ property public final int advertiseMode;
+ property public final int advertiseTimeoutMillis;
+ property public final int advertiseTxPowerLevel;
+ field public static final int ADVERTISE_MODE_BALANCED = 1; // 0x1
+ field public static final int ADVERTISE_MODE_LOW_LATENCY = 2; // 0x2
+ field public static final int ADVERTISE_MODE_LOW_POWER = 0; // 0x0
+ field public static final int ADVERTISE_TX_POWER_HIGH = 3; // 0x3
+ field public static final int ADVERTISE_TX_POWER_LOW = 1; // 0x1
+ field public static final int ADVERTISE_TX_POWER_MEDIUM = 2; // 0x2
+ field public static final int ADVERTISE_TX_POWER_ULTRA_LOW = 0; // 0x0
+ field public static final androidx.bluetooth.core.AdvertiseSettings.Companion Companion;
+ }
+
+ public static final class AdvertiseSettings.Companion {
+ }
+
public final class ScanFilter {
ctor public ScanFilter(optional String? deviceName, optional String? deviceAddress, optional android.os.ParcelUuid? serviceUuid, optional android.os.ParcelUuid? serviceUuidMask, optional android.os.ParcelUuid? serviceDataUuid, optional byte[]? serviceData, optional byte[]? serviceDataMask, optional int manufacturerId, optional byte[]? manufacturerData, optional byte[]? manufacturerDataMask, optional android.os.ParcelUuid? serviceSolicitationUuid, optional android.os.ParcelUuid? serviceSolicitationUuidMask, optional byte[]? advertisingData, optional byte[]? advertisingDataMask, optional int advertisingDataType);
method public byte[]? getAdvertisingData();
diff --git a/bluetooth/bluetooth-core/api/public_plus_experimental_current.txt b/bluetooth/bluetooth-core/api/public_plus_experimental_current.txt
index 21a003a92..7161d63 100644
--- a/bluetooth/bluetooth-core/api/public_plus_experimental_current.txt
+++ b/bluetooth/bluetooth-core/api/public_plus_experimental_current.txt
@@ -1,6 +1,29 @@
// Signature format: 4.0
package androidx.bluetooth.core {
+ public final class AdvertiseSettings {
+ ctor public AdvertiseSettings(optional int advertiseMode, optional int advertiseTxPowerLevel, optional boolean advertiseConnectable, optional int advertiseTimeoutMillis);
+ method public boolean getAdvertiseConnectable();
+ method public int getAdvertiseMode();
+ method public int getAdvertiseTimeoutMillis();
+ method public int getAdvertiseTxPowerLevel();
+ property public final boolean advertiseConnectable;
+ property public final int advertiseMode;
+ property public final int advertiseTimeoutMillis;
+ property public final int advertiseTxPowerLevel;
+ field public static final int ADVERTISE_MODE_BALANCED = 1; // 0x1
+ field public static final int ADVERTISE_MODE_LOW_LATENCY = 2; // 0x2
+ field public static final int ADVERTISE_MODE_LOW_POWER = 0; // 0x0
+ field public static final int ADVERTISE_TX_POWER_HIGH = 3; // 0x3
+ field public static final int ADVERTISE_TX_POWER_LOW = 1; // 0x1
+ field public static final int ADVERTISE_TX_POWER_MEDIUM = 2; // 0x2
+ field public static final int ADVERTISE_TX_POWER_ULTRA_LOW = 0; // 0x0
+ field public static final androidx.bluetooth.core.AdvertiseSettings.Companion Companion;
+ }
+
+ public static final class AdvertiseSettings.Companion {
+ }
+
public final class ScanFilter {
ctor public ScanFilter(optional String? deviceName, optional String? deviceAddress, optional android.os.ParcelUuid? serviceUuid, optional android.os.ParcelUuid? serviceUuidMask, optional android.os.ParcelUuid? serviceDataUuid, optional byte[]? serviceData, optional byte[]? serviceDataMask, optional int manufacturerId, optional byte[]? manufacturerData, optional byte[]? manufacturerDataMask, optional android.os.ParcelUuid? serviceSolicitationUuid, optional android.os.ParcelUuid? serviceSolicitationUuidMask, optional byte[]? advertisingData, optional byte[]? advertisingDataMask, optional int advertisingDataType);
method public byte[]? getAdvertisingData();
diff --git a/bluetooth/bluetooth-core/api/restricted_current.txt b/bluetooth/bluetooth-core/api/restricted_current.txt
index a525712..f650587 100644
--- a/bluetooth/bluetooth-core/api/restricted_current.txt
+++ b/bluetooth/bluetooth-core/api/restricted_current.txt
@@ -1,6 +1,31 @@
// Signature format: 4.0
package androidx.bluetooth.core {
+ public final class AdvertiseSettings implements androidx.bluetooth.core.Bundleable {
+ ctor public AdvertiseSettings(optional int advertiseMode, optional int advertiseTxPowerLevel, optional boolean advertiseConnectable, optional int advertiseTimeoutMillis);
+ method public boolean getAdvertiseConnectable();
+ method public int getAdvertiseMode();
+ method public int getAdvertiseTimeoutMillis();
+ method public int getAdvertiseTxPowerLevel();
+ method @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public android.os.Bundle toBundle();
+ property public final boolean advertiseConnectable;
+ property public final int advertiseMode;
+ property public final int advertiseTimeoutMillis;
+ property public final int advertiseTxPowerLevel;
+ field public static final int ADVERTISE_MODE_BALANCED = 1; // 0x1
+ field public static final int ADVERTISE_MODE_LOW_LATENCY = 2; // 0x2
+ field public static final int ADVERTISE_MODE_LOW_POWER = 0; // 0x0
+ field public static final int ADVERTISE_TX_POWER_HIGH = 3; // 0x3
+ field public static final int ADVERTISE_TX_POWER_LOW = 1; // 0x1
+ field public static final int ADVERTISE_TX_POWER_MEDIUM = 2; // 0x2
+ field public static final int ADVERTISE_TX_POWER_ULTRA_LOW = 0; // 0x0
+ field @RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public static final androidx.bluetooth.core.Bundleable.Creator<androidx.bluetooth.core.AdvertiseSettings> CREATOR;
+ field public static final androidx.bluetooth.core.AdvertiseSettings.Companion Companion;
+ }
+
+ public static final class AdvertiseSettings.Companion {
+ }
+
@RestrictTo(androidx.annotation.RestrictTo.Scope.LIBRARY_GROUP_PREFIX) public interface Bundleable {
method public android.os.Bundle toBundle();
}
diff --git a/bluetooth/bluetooth-core/src/main/java/androidx/bluetooth/core/AdvertiseSettings.kt b/bluetooth/bluetooth-core/src/main/java/androidx/bluetooth/core/AdvertiseSettings.kt
index 3c80d86..b2e1eb4 100644
--- a/bluetooth/bluetooth-core/src/main/java/androidx/bluetooth/core/AdvertiseSettings.kt
+++ b/bluetooth/bluetooth-core/src/main/java/androidx/bluetooth/core/AdvertiseSettings.kt
@@ -18,18 +18,24 @@
import android.bluetooth.le.AdvertiseSettings as FwkAdvertiseSettings
import android.os.Bundle
+import androidx.annotation.RestrictTo
/**
* The {@link AdvertiseSettings} provide a way to adjust advertising preferences for each
- * Bluetooth LE advertisement instance.
- * @hide
+ * Bluetooth LE advertisement instance. Use the constructor to create an instance of this class.
*/
+@SuppressWarnings("HiddenSuperclass") // Bundleable
class AdvertiseSettings internal constructor(internal val fwkInstance: FwkAdvertiseSettings) :
Bundleable {
companion object {
internal const val FIELD_FWK_ADVERTISE_SETTINGS = 0
+ /**
+ * @hide
+ */
+ @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
+ @JvmField
val CREATOR: Bundleable.Creator<AdvertiseSettings> =
object : Bundleable.Creator<AdvertiseSettings> {
override fun fromBundle(bundle: Bundle): AdvertiseSettings {
@@ -50,25 +56,16 @@
}
internal fun buildFwkAdvertiseSettings(
- advertiseMode: Int? = null,
- advertiseTxPowerLevel: Int? = null,
- advertiseConnectable: Boolean = true,
- advertiseTimeoutMillis: Int? = null,
+ advertiseMode: Int,
+ advertiseTxPowerLevel: Int,
+ advertiseConnectable: Boolean,
+ advertiseTimeoutMillis: Int,
): FwkAdvertiseSettings {
val builder = FwkAdvertiseSettings.Builder()
.setConnectable(advertiseConnectable)
-
- if (advertiseMode != null) {
- builder.setAdvertiseMode(advertiseMode)
- }
-
- if (advertiseTxPowerLevel != null) {
- builder.setTxPowerLevel(advertiseTxPowerLevel)
- }
-
- if (advertiseTimeoutMillis != null) {
- builder.setTimeout(advertiseTimeoutMillis)
- }
+ .setAdvertiseMode(advertiseMode)
+ .setTxPowerLevel(advertiseTxPowerLevel)
+ .setTimeout(advertiseTimeoutMillis)
return builder.build()
}
@@ -112,11 +109,6 @@
* advertising packet.
*/
const val ADVERTISE_TX_POWER_HIGH = FwkAdvertiseSettings.ADVERTISE_TX_POWER_HIGH
-
- /**
- * The maximum limited advertisement duration as specified by the Bluetooth SIG
- */
- const val LIMITED_ADVERTISING_MAX_MILLIS = 180_000
}
val advertiseMode: Int
@@ -133,10 +125,10 @@
get() = fwkInstance.timeout
constructor(
- advertiseMode: Int? = null,
- advertiseTxPowerLevel: Int? = null,
+ advertiseMode: Int = ADVERTISE_MODE_LOW_POWER,
+ advertiseTxPowerLevel: Int = ADVERTISE_TX_POWER_MEDIUM,
advertiseConnectable: Boolean = true,
- advertiseTimeoutMillis: Int? = null
+ advertiseTimeoutMillis: Int = 0
) : this(buildFwkAdvertiseSettings(
advertiseMode,
advertiseTxPowerLevel,
@@ -144,6 +136,10 @@
advertiseTimeoutMillis
))
+ /**
+ * @hide
+ */
+ @RestrictTo(RestrictTo.Scope.LIBRARY_GROUP_PREFIX)
override fun toBundle(): Bundle {
val bundle = Bundle()
bundle.putParcelable(keyForField(FIELD_FWK_ADVERTISE_SETTINGS), fwkInstance)