16d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang/* 26d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * Copyright (C) 2014 The Android Open Source Project 36d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * 46d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * Licensed under the Apache License, Version 2.0 (the "License"); 56d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * you may not use this file except in compliance with the License. 66d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * You may obtain a copy of the License at 76d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * 86d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * http://www.apache.org/licenses/LICENSE-2.0 96d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * 106d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * Unless required by applicable law or agreed to in writing, software 116d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * distributed under the License is distributed on an "AS IS" BASIS, 126d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 136d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * See the License for the specific language governing permissions and 146d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * limitations under the License. 156d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang */ 166d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 176d81118032b92caa0f5cfebe11af02a98f819d5eWei Wangpackage android.bluetooth.le; 186d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 196d81118032b92caa0f5cfebe11af02a98f819d5eWei Wangimport android.os.Parcel; 206d81118032b92caa0f5cfebe11af02a98f819d5eWei Wangimport android.os.Parcelable; 216d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 226d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang/** 236d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * The {@link AdvertiseSettings} provide a way to adjust advertising preferences for each 24af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang * Bluetooth LE advertisement instance. Use {@link AdvertiseSettings.Builder} to create an 25af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang * instance of this class. 266d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang */ 276d81118032b92caa0f5cfebe11af02a98f819d5eWei Wangpublic final class AdvertiseSettings implements Parcelable { 286d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang /** 296d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * Perform Bluetooth LE advertising in low power mode. This is the default and preferred 306d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * advertising mode as it consumes the least power. 316d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang */ 326d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang public static final int ADVERTISE_MODE_LOW_POWER = 0; 33af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang 346d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang /** 356d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * Perform Bluetooth LE advertising in balanced power mode. This is balanced between advertising 366d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * frequency and power consumption. 376d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang */ 386d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang public static final int ADVERTISE_MODE_BALANCED = 1; 39af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang 406d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang /** 416d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * Perform Bluetooth LE advertising in low latency, high power mode. This has the highest power 42af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang * consumption and should not be used for continuous background advertising. 436d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang */ 446d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang public static final int ADVERTISE_MODE_LOW_LATENCY = 2; 456d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 466d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang /** 47af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang * Advertise using the lowest transmission (TX) power level. Low transmission power can be used 48af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang * to restrict the visibility range of advertising packets. 496d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang */ 506d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang public static final int ADVERTISE_TX_POWER_ULTRA_LOW = 0; 51af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang 526d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang /** 53af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang * Advertise using low TX power level. 546d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang */ 556d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang public static final int ADVERTISE_TX_POWER_LOW = 1; 56af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang 576d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang /** 58af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang * Advertise using medium TX power level. 596d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang */ 606d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang public static final int ADVERTISE_TX_POWER_MEDIUM = 2; 61af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang 626d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang /** 63af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang * Advertise using high TX power level. This corresponds to largest visibility range of the 646d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * advertising packet. 656d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang */ 666d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang public static final int ADVERTISE_TX_POWER_HIGH = 3; 676d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 686d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang /** 699960b576533041d07b141008c5925dcecb8c9224Wei Wang * The maximum limited advertisement duration as specified by the Bluetooth SIG 706d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang */ 719960b576533041d07b141008c5925dcecb8c9224Wei Wang private static final int LIMITED_ADVERTISING_MAX_MILLIS = 180 * 1000; 726d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 736d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang private final int mAdvertiseMode; 746d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang private final int mAdvertiseTxPowerLevel; 759960b576533041d07b141008c5925dcecb8c9224Wei Wang private final int mAdvertiseTimeoutMillis; 76af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang private final boolean mAdvertiseConnectable; 776d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 786d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang private AdvertiseSettings(int advertiseMode, int advertiseTxPowerLevel, 79af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang boolean advertiseConnectable, int advertiseTimeout) { 806d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang mAdvertiseMode = advertiseMode; 816d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang mAdvertiseTxPowerLevel = advertiseTxPowerLevel; 82af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang mAdvertiseConnectable = advertiseConnectable; 839960b576533041d07b141008c5925dcecb8c9224Wei Wang mAdvertiseTimeoutMillis = advertiseTimeout; 846d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang } 856d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 866d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang private AdvertiseSettings(Parcel in) { 876d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang mAdvertiseMode = in.readInt(); 886d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang mAdvertiseTxPowerLevel = in.readInt(); 89af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang mAdvertiseConnectable = in.readInt() != 0 ? true : false; 909960b576533041d07b141008c5925dcecb8c9224Wei Wang mAdvertiseTimeoutMillis = in.readInt(); 916d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang } 926d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 936d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang /** 946d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * Returns the advertise mode. 956d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang */ 966d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang public int getMode() { 976d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang return mAdvertiseMode; 986d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang } 996d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 1006d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang /** 101af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang * Returns the TX power level for advertising. 1026d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang */ 1036d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang public int getTxPowerLevel() { 1046d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang return mAdvertiseTxPowerLevel; 1056d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang } 1066d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 1076d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang /** 108af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang * Returns whether the advertisement will indicate connectable. 1096d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang */ 1109960b576533041d07b141008c5925dcecb8c9224Wei Wang public boolean isConnectable() { 111af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang return mAdvertiseConnectable; 112af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang } 113af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang 114af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang /** 1159960b576533041d07b141008c5925dcecb8c9224Wei Wang * Returns the advertising time limit in milliseconds. 116af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang */ 117af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang public int getTimeout() { 1189960b576533041d07b141008c5925dcecb8c9224Wei Wang return mAdvertiseTimeoutMillis; 1196d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang } 1206d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 1216d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang @Override 1226d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang public String toString() { 123af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang return "Settings [mAdvertiseMode=" + mAdvertiseMode 124af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang + ", mAdvertiseTxPowerLevel=" + mAdvertiseTxPowerLevel 125af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang + ", mAdvertiseConnectable=" + mAdvertiseConnectable 1269960b576533041d07b141008c5925dcecb8c9224Wei Wang + ", mAdvertiseTimeoutMillis=" + mAdvertiseTimeoutMillis + "]"; 1276d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang } 1286d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 1296d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang @Override 1306d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang public int describeContents() { 1316d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang return 0; 1326d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang } 1336d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 1346d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang @Override 1356d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang public void writeToParcel(Parcel dest, int flags) { 1366d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang dest.writeInt(mAdvertiseMode); 1376d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang dest.writeInt(mAdvertiseTxPowerLevel); 138af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang dest.writeInt(mAdvertiseConnectable ? 1 : 0); 1399960b576533041d07b141008c5925dcecb8c9224Wei Wang dest.writeInt(mAdvertiseTimeoutMillis); 1406d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang } 1416d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 1426d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang public static final Parcelable.Creator<AdvertiseSettings> CREATOR = 1436d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang new Creator<AdvertiseSettings>() { 1446d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang @Override 1456d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang public AdvertiseSettings[] newArray(int size) { 1466d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang return new AdvertiseSettings[size]; 1476d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang } 1486d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 1496d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang @Override 1506d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang public AdvertiseSettings createFromParcel(Parcel in) { 1516d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang return new AdvertiseSettings(in); 1526d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang } 1536d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang }; 1546d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 1556d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang /** 1566d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * Builder class for {@link AdvertiseSettings}. 1576d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang */ 1586d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang public static final class Builder { 1596d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang private int mMode = ADVERTISE_MODE_LOW_POWER; 1606d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang private int mTxPowerLevel = ADVERTISE_TX_POWER_MEDIUM; 1619960b576533041d07b141008c5925dcecb8c9224Wei Wang private int mTimeoutMillis = 0; 162af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang private boolean mConnectable = true; 1636d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 1646d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang /** 1656d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * Set advertise mode to control the advertising power and latency. 1666d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * 1676d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * @param advertiseMode Bluetooth LE Advertising mode, can only be one of 1686d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * {@link AdvertiseSettings#ADVERTISE_MODE_LOW_POWER}, 1696d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * {@link AdvertiseSettings#ADVERTISE_MODE_BALANCED}, or 1706d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * {@link AdvertiseSettings#ADVERTISE_MODE_LOW_LATENCY}. 1716d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * @throws IllegalArgumentException If the advertiseMode is invalid. 1726d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang */ 1736d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang public Builder setAdvertiseMode(int advertiseMode) { 1746d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang if (advertiseMode < ADVERTISE_MODE_LOW_POWER 1756d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang || advertiseMode > ADVERTISE_MODE_LOW_LATENCY) { 1766d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang throw new IllegalArgumentException("unknown mode " + advertiseMode); 1776d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang } 1786d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang mMode = advertiseMode; 1796d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang return this; 1806d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang } 1816d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 1826d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang /** 183af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang * Set advertise TX power level to control the transmission power level for the advertising. 1846d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * 1856d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * @param txPowerLevel Transmission power of Bluetooth LE Advertising, can only be one of 1866d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * {@link AdvertiseSettings#ADVERTISE_TX_POWER_ULTRA_LOW}, 1876d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * {@link AdvertiseSettings#ADVERTISE_TX_POWER_LOW}, 1886d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * {@link AdvertiseSettings#ADVERTISE_TX_POWER_MEDIUM} or 1896d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * {@link AdvertiseSettings#ADVERTISE_TX_POWER_HIGH}. 1906d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * @throws IllegalArgumentException If the {@code txPowerLevel} is invalid. 1916d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang */ 1926d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang public Builder setTxPowerLevel(int txPowerLevel) { 1936d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang if (txPowerLevel < ADVERTISE_TX_POWER_ULTRA_LOW 1946d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang || txPowerLevel > ADVERTISE_TX_POWER_HIGH) { 1956d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang throw new IllegalArgumentException("unknown tx power level " + txPowerLevel); 1966d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang } 1976d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang mTxPowerLevel = txPowerLevel; 1986d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang return this; 1996d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang } 2006d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 2016d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang /** 202af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang * Set whether the advertisement type should be connectable or non-connectable. 2036d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * 2049960b576533041d07b141008c5925dcecb8c9224Wei Wang * @param connectable Controls whether the advertisment type will be connectable (true) 205af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang * or non-connectable (false). 206af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang */ 2079960b576533041d07b141008c5925dcecb8c9224Wei Wang public Builder setConnectable(boolean connectable) { 2089960b576533041d07b141008c5925dcecb8c9224Wei Wang mConnectable = connectable; 209af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang return this; 210af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang } 211af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang 212af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang /** 213af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang * Limit advertising to a given amount of time. 2149960b576533041d07b141008c5925dcecb8c9224Wei Wang * @param timeoutMillis Advertising time limit. May not exceed 180000 milliseconds. 215af74e66e29a518157cb78fcef4b4fc532b7f60b0Wei Wang * A value of 0 will disable the time limit. 2169960b576533041d07b141008c5925dcecb8c9224Wei Wang * @throws IllegalArgumentException If the provided timeout is over 180000 ms. 2176d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang */ 2189960b576533041d07b141008c5925dcecb8c9224Wei Wang public Builder setTimeout(int timeoutMillis) { 2199960b576533041d07b141008c5925dcecb8c9224Wei Wang if (timeoutMillis < 0 || timeoutMillis > LIMITED_ADVERTISING_MAX_MILLIS) { 2209960b576533041d07b141008c5925dcecb8c9224Wei Wang throw new IllegalArgumentException("timeoutMillis invalid (must be 0-" 2219960b576533041d07b141008c5925dcecb8c9224Wei Wang + LIMITED_ADVERTISING_MAX_MILLIS + " milliseconds)"); 2226d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang } 2239960b576533041d07b141008c5925dcecb8c9224Wei Wang mTimeoutMillis = timeoutMillis; 2246d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang return this; 2256d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang } 2266d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang 2276d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang /** 2286d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang * Build the {@link AdvertiseSettings} object. 2296d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang */ 2306d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang public AdvertiseSettings build() { 2319960b576533041d07b141008c5925dcecb8c9224Wei Wang return new AdvertiseSettings(mMode, mTxPowerLevel, mConnectable, mTimeoutMillis); 2326d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang } 2336d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang } 2346d81118032b92caa0f5cfebe11af02a98f819d5eWei Wang} 235