Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Ctors](https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder#pubctors) \| [Methods](https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder#inhmethods)

# ScanSettings.Builder

*** ** * ** ***


`
public
static
final

class
ScanSettings.Builder
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


`

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.bluetooth.le.ScanSettings.Builder |

<br />

*** ** * ** ***

Builder for `https://developer.android.com/reference/android/bluetooth/le/ScanSettings`.

## Summary

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder#Builder()() ` Create an empty builder. |

| ### Public methods ||
|---|---|
| ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings` | ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder#build()() ` Build `https://developer.android.com/reference/android/bluetooth/le/ScanSettings`. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder#setCallbackType(int)(int callbackType) ` Set callback type for Bluetooth LE scan. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder#setLegacy(boolean)(boolean legacy) ` Set whether only legacy advertisements should be returned in scan results. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder#setMatchMode(int)(int matchMode) ` Set match mode for Bluetooth LE scan filters hardware match. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder#setNumOfMatches(int)(int numOfMatches) ` Set the number of matches for Bluetooth LE scan filters hardware match. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder#setPhy(int)(int phy) ` Set the Physical Layer to use during this scan. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder#setReportDelay(long)(long reportDelayMillis) ` Set report delay timestamp for Bluetooth LE scan. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder#setRssiThreshold(int)(int rssiThreshold) ` Sets the RSSI threshold. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder#setScanMode(int)(int scanMode) ` Set scan mode for Bluetooth LE scan. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder#setScanType(int)(int scanType) ` Sets the scan type. |

### Inherited methods

From class `

https://developer.android.com/reference/java/lang/Object

` `


https://developer.android.com/reference/java/lang/Object` `
https://developer.android.com/reference/java/lang/Object#clone()()
`

Creates and returns a copy of this object.


`


boolean` `
https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj)
`

Indicates whether some other object is "equal to" this one.


`


void` `
https://developer.android.com/reference/java/lang/Object#finalize()()
`

Called by the garbage collector on an object when garbage collection
determines that there are no more references to the object.


`


final

https://developer.android.com/reference/java/lang/Class<?>` `
https://developer.android.com/reference/java/lang/Object#getClass()()
`

Returns the runtime class of this `Object`.


`


int` `
https://developer.android.com/reference/java/lang/Object#hashCode()()
`

Returns a hash code value for the object.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#notify()()
`

Wakes up a single thread that is waiting on this object's
monitor.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#notifyAll()()
`

Wakes up all threads that are waiting on this object's monitor.


`


https://developer.android.com/reference/java/lang/String` `
https://developer.android.com/reference/java/lang/Object#toString()()
`

Returns a string representation of the object.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos)
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*, or until a
certain amount of real time has elapsed.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis)
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*, or until a
certain amount of real time has elapsed.


`


final

void` `
https://developer.android.com/reference/java/lang/Object#wait()()
`

Causes the current thread to wait until it is awakened, typically
by being *notified* or *interrupted*.


## Public constructors

### Builder

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Builder ()
```

Create an empty builder.

<br />

## Public methods

### build

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ScanSettings build ()
```

Build `https://developer.android.com/reference/android/bluetooth/le/ScanSettings`.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/bluetooth/le/ScanSettings` | <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if the settings cannot be built. |

### setCallbackType

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ScanSettings.Builder setCallbackType (int callbackType)
```

Set callback type for Bluetooth LE scan.

<br />

| Parameters ||
|---|---|
| `callbackType` | `int`: The callback type flags for the scan. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder` | <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | If the `callbackType` is invalid. |

### setLegacy

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ScanSettings.Builder setLegacy (boolean legacy)
```

Set whether only legacy advertisements should be returned in scan results. Legacy
advertisements include advertisements as specified by the Bluetooth core specification
4.2 and below. This is true by default for compatibility with older apps.

<br />

| Parameters ||
|---|---|
| `legacy` | `boolean`: true if only legacy advertisements will be returned <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder` | <br /> |

### setMatchMode

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ScanSettings.Builder setMatchMode (int matchMode)
```

Set match mode for Bluetooth LE scan filters hardware match.

<br />

| Parameters ||
|---|---|
| `matchMode` | `int`: The match mode can be one of `https://developer.android.com/reference/android/bluetooth/le/ScanSettings#MATCH_MODE_AGGRESSIVE` or `https://developer.android.com/reference/android/bluetooth/le/ScanSettings#MATCH_MODE_STICKY` <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder` | <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | If the `matchMode` is invalid. |

### setNumOfMatches

Added in [API level 23](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ScanSettings.Builder setNumOfMatches (int numOfMatches)
```

Set the number of matches for Bluetooth LE scan filters hardware match.

<br />

| Parameters ||
|---|---|
| `numOfMatches` | `int`: The num of matches can be one of `https://developer.android.com/reference/android/bluetooth/le/ScanSettings#MATCH_NUM_ONE_ADVERTISEMENT` or `https://developer.android.com/reference/android/bluetooth/le/ScanSettings#MATCH_NUM_FEW_ADVERTISEMENT` or `https://developer.android.com/reference/android/bluetooth/le/ScanSettings#MATCH_NUM_MAX_ADVERTISEMENT` <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder` | <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | If the `matchMode` is invalid. |

### setPhy

Added in [API level 26](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ScanSettings.Builder setPhy (int phy)
```

Set the Physical Layer to use during this scan. This is used only if `https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder#setLegacy(boolean)` is set to false. `https://developer.android.com/reference/android/bluetooth/BluetoothAdapter#isLeCodedPhySupported()` may be used to check whether LE
Coded phy is supported by calling `https://developer.android.com/reference/android/bluetooth/BluetoothAdapter#isLeCodedPhySupported()`. Selecting an unsupported phy
will result in failure to start scan.

<br />

| Parameters ||
|---|---|
| `phy` | `int`: Can be one of `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#PHY_LE_1M`, `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#PHY_LE_CODED` or `https://developer.android.com/reference/android/bluetooth/le/ScanSettings#PHY_LE_ALL_SUPPORTED` <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder` | <br /> |

### setReportDelay

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ScanSettings.Builder setReportDelay (long reportDelayMillis)
```

Set report delay timestamp for Bluetooth LE scan. If set to 0, you will be notified of
scan results immediately. If \> 0, scan results are queued up and delivered after the
requested delay or 5000 milliseconds (whichever is higher). Note scan results may be
delivered sooner if the internal buffers fill up.

<br />

| Parameters ||
|---|---|
| `reportDelayMillis` | `long`: how frequently scan results should be delivered in milliseconds <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder` | <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if `reportDelayMillis` \< 0 |

### setRssiThreshold

Added in [version 36.1](https://developer.android.com/topic/libraries/support-library/revisions)

```
public ScanSettings.Builder setRssiThreshold (int rssiThreshold)
```

Sets the RSSI threshold. When filtering by RSSI threshold, an advertisement will pass the
filter only if its RSSI value is greater than or equal to the specified threshold.

<br />

| Parameters ||
|---|---|
| `rssiThreshold` | `int`: the high threshold of RSSI value. The valid range is \[-127, 126\]. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder` | this builder. This value cannot be `null`. <br /> |

### setScanMode

Added in [API level 21](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public ScanSettings.Builder setScanMode (int scanMode)
```

Set scan mode for Bluetooth LE scan.

<br />

| Parameters ||
|---|---|
| `scanMode` | `int`: The scan mode can be one of `https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_MODE_LOW_POWER`, `https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_MODE_BALANCED` or `https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_MODE_LOW_LATENCY`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder` | <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | If the `scanMode` is invalid. |

### setScanType

Added in [version 36.1](https://developer.android.com/topic/libraries/support-library/revisions)

```
public ScanSettings.Builder setScanType (int scanType)
```

Sets the scan type. Either `https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_TYPE_ACTIVE` or `https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_TYPE_PASSIVE` can be
set. The default value is `https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_TYPE_ACTIVE`.

<br />

| Parameters ||
|---|---|
| `scanType` | `int`: Either `https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_TYPE_ACTIVE` or `https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_TYPE_PASSIVE`. If scan type is `https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_TYPE_PASSIVE`, scan results are delivered immediately upon receiving an advertising report, without waiting for scan responses. Value is one of the following: - `https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_TYPE_UNKNOWN` - `https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_TYPE_PASSIVE` - `https://developer.android.com/reference/android/bluetooth/le/ScanSettings#SCAN_TYPE_ACTIVE` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/bluetooth/le/ScanSettings.Builder` | This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if invalid scan type is given. |