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/ScanFilter.Builder#pubctors) \| [Methods](https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder#inhmethods)

# ScanFilter.Builder

*** ** * ** ***

[Kotlin](https://developer.android.com/reference/kotlin/android/bluetooth/le/ScanFilter.Builder "View this page in Kotlin") \|Java


`
public
static
final

class
ScanFilter.Builder
`


`

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


`

`


`

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

<br />

*** ** * ** ***

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

## Summary

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder#Builder()() ` |

| ### Public methods ||
|---|---|
| ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter` | ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder#build()() ` Build `https://developer.android.com/reference/android/bluetooth/le/ScanFilter`. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder#setAdvertisingDataType(int)(int advertisingDataType) ` Set filter on advertising data with specific advertising data type. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder#setAdvertisingDataTypeWithData(int,%20byte[],%20byte[])(int advertisingDataType, byte[] advertisingData, byte[] advertisingDataMask) ` Set filter on advertising data with specific advertising data type. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder#setDeviceAddress(java.lang.String)(https://developer.android.com/reference/java/lang/String deviceAddress) ` Set a scan filter on the remote device address. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder#setDeviceName(java.lang.String)(https://developer.android.com/reference/java/lang/String deviceName) ` Set filter on device name. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder#setManufacturerData(int,%20byte[],%20byte[])(int manufacturerId, byte[] manufacturerData, byte[] manufacturerDataMask) ` Set filter on partial manufacture data. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder#setManufacturerData(int,%20byte[])(int manufacturerId, byte[] manufacturerData) ` Set filter on on manufacturerData. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder#setServiceData(android.os.ParcelUuid,%20byte[],%20byte[])(https://developer.android.com/reference/android/os/ParcelUuid serviceDataUuid, byte[] serviceData, byte[] serviceDataMask) ` Set partial filter on service data. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder#setServiceData(android.os.ParcelUuid,%20byte[])(https://developer.android.com/reference/android/os/ParcelUuid serviceDataUuid, byte[] serviceData) ` Set filtering on service data. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder#setServiceSolicitationUuid(android.os.ParcelUuid,%20android.os.ParcelUuid)(https://developer.android.com/reference/android/os/ParcelUuid serviceSolicitationUuid, https://developer.android.com/reference/android/os/ParcelUuid solicitationUuidMask) ` Set filter on partial service Solicitation uuid. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder#setServiceSolicitationUuid(android.os.ParcelUuid)(https://developer.android.com/reference/android/os/ParcelUuid serviceSolicitationUuid) ` Set filter on service solicitation uuid. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder#setServiceUuid(android.os.ParcelUuid)(https://developer.android.com/reference/android/os/ParcelUuid serviceUuid) ` Set filter on service uuid. |
| ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder` | ` https://developer.android.com/reference/android/bluetooth/le/ScanFilter.Builder#setServiceUuid(android.os.ParcelUuid,%20android.os.ParcelUuid)(https://developer.android.com/reference/android/os/ParcelUuid serviceUuid, https://developer.android.com/reference/android/os/ParcelUuid uuidMask) ` Set filter on partial service uuid. |

| ### 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 ()
```

<br />

<br />

## Public methods

### build

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

```
public ScanFilter build ()
```

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

<br />

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

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

### setAdvertisingDataType

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

```
public ScanFilter.Builder setAdvertisingDataType (int advertisingDataType)
```

Set filter on advertising data with specific advertising data type.

The values of `advertisingDataType` are assigned by Bluetooth SIG. For more
details refer to Bluetooth Generic Access Profile.
(https://www.bluetooth.com/specifications/assigned-numbers/)

<br />

| Parameters ||
|---|---|
| `advertisingDataType` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_NONE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_FLAGS` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_UUIDS_16_BIT_PARTIAL` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_UUIDS_16_BIT_COMPLETE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_UUIDS_32_BIT_PARTIAL` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_UUIDS_32_BIT_COMPLETE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_UUIDS_128_BIT_PARTIAL` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_UUIDS_128_BIT_COMPLETE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_LOCAL_NAME_SHORT` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_LOCAL_NAME_COMPLETE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_TX_POWER_LEVEL` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_CLASS_OF_DEVICE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SIMPLE_PAIRING_HASH_C` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SIMPLE_PAIRING_RANDOMIZER_R` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_DEVICE_ID` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SECURITY_MANAGER_OUT_OF_BAND_FLAGS` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_SOLICITATION_UUIDS_16_BIT` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_SOLICITATION_UUIDS_128_BIT` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_DATA_16_BIT` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_PUBLIC_TARGET_ADDRESS` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_RANDOM_TARGET_ADDRESS` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_APPEARANCE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_ADVERTISING_INTERVAL` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_LE_ROLE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SIMPLE_PAIRING_HASH_C_256` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SIMPLE_PAIRING_RANDOMIZER_R_256` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_SOLICITATION_UUIDS_32_BIT` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_DATA_32_BIT` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_DATA_128_BIT` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_LE_SECURE_CONNECTIONS_CONFIRMATION_VALUE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_LE_SECURE_CONNECTIONS_RANDOM_VALUE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_URI` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_INDOOR_POSITIONING` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_TRANSPORT_DISCOVERY_DATA` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_LE_SUPPORTED_FEATURES` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_CHANNEL_MAP_UPDATE_INDICATION` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_PB_ADV` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_MESH_MESSAGE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_MESH_BEACON` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_BIG_INFO` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_BROADCAST_CODE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_RESOLVABLE_SET_IDENTIFIER` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_ADVERTISING_INTERVAL_LONG` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_3D_INFORMATION_DATA` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_MANUFACTURER_SPECIFIC_DATA` |

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

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

### setAdvertisingDataTypeWithData

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

```
public ScanFilter.Builder setAdvertisingDataTypeWithData (int advertisingDataType, 
                byte[] advertisingData, 
                byte[] advertisingDataMask)
```

Set filter on advertising data with specific advertising data type. For any bit in the
mask, set it the 1 if it needs to match the one in advertising data, otherwise set it to
0.

The values of `advertisingDataType` are assigned by Bluetooth SIG. For more
details refer to Bluetooth Generic Access Profile.
(https://www.bluetooth.com/specifications/assigned-numbers/) The `advertisingDataMask` must have the same length of `advertisingData`.

<br />

| Parameters ||
|---|---|
| `advertisingDataType` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_NONE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_FLAGS` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_UUIDS_16_BIT_PARTIAL` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_UUIDS_16_BIT_COMPLETE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_UUIDS_32_BIT_PARTIAL` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_UUIDS_32_BIT_COMPLETE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_UUIDS_128_BIT_PARTIAL` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_UUIDS_128_BIT_COMPLETE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_LOCAL_NAME_SHORT` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_LOCAL_NAME_COMPLETE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_TX_POWER_LEVEL` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_CLASS_OF_DEVICE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SIMPLE_PAIRING_HASH_C` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SIMPLE_PAIRING_RANDOMIZER_R` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_DEVICE_ID` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SECURITY_MANAGER_OUT_OF_BAND_FLAGS` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_SOLICITATION_UUIDS_16_BIT` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_SOLICITATION_UUIDS_128_BIT` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_DATA_16_BIT` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_PUBLIC_TARGET_ADDRESS` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_RANDOM_TARGET_ADDRESS` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_APPEARANCE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_ADVERTISING_INTERVAL` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_LE_ROLE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SIMPLE_PAIRING_HASH_C_256` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SIMPLE_PAIRING_RANDOMIZER_R_256` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_SOLICITATION_UUIDS_32_BIT` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_DATA_32_BIT` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_SERVICE_DATA_128_BIT` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_LE_SECURE_CONNECTIONS_CONFIRMATION_VALUE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_LE_SECURE_CONNECTIONS_RANDOM_VALUE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_URI` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_INDOOR_POSITIONING` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_TRANSPORT_DISCOVERY_DATA` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_LE_SUPPORTED_FEATURES` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_CHANNEL_MAP_UPDATE_INDICATION` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_PB_ADV` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_MESH_MESSAGE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_MESH_BEACON` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_BIG_INFO` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_BROADCAST_CODE` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_RESOLVABLE_SET_IDENTIFIER` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_ADVERTISING_INTERVAL_LONG` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_3D_INFORMATION_DATA` - `https://developer.android.com/reference/android/bluetooth/le/ScanRecord#DATA_TYPE_MANUFACTURER_SPECIFIC_DATA` |
| `advertisingData` | `byte`: This value cannot be `null`. <br /> |
| `advertisingDataMask` | `byte`: This value cannot be `null`. <br /> |

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

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | If the `advertisingDataType` is invalid, `advertisingData` or `advertisingDataMask` is null or `advertisingData` and `advertisingDataMask` have different length. |

### setDeviceAddress

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

```
public ScanFilter.Builder setDeviceAddress (String deviceAddress)
```

Set a scan filter on the remote device address.

The address passed to this API must be in big endian byte order. It needs to be in the
format of "01:02:03:AB:CD:EF". The device address can be validated using `https://developer.android.com/reference/android/bluetooth/BluetoothAdapter#checkBluetoothAddress(java.lang.String)`. The @AddressType is defaulted to `https://developer.android.com/reference/android/bluetooth/BluetoothDevice#ADDRESS_TYPE_PUBLIC`.

<br />

| Parameters ||
|---|---|
| `deviceAddress` | `String`: the remote device Bluetooth address for the filter <br /> |

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

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

### setDeviceName

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

```
public ScanFilter.Builder setDeviceName (String deviceName)
```

Set filter on device name.

<br />

| Parameters ||
|---|---|
| `deviceName` | `String` <br /> |

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

### setManufacturerData

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

```
public ScanFilter.Builder setManufacturerData (int manufacturerId, 
                byte[] manufacturerData, 
                byte[] manufacturerDataMask)
```

Set filter on partial manufacture data. For any bit in the mask, set it the 1 if it needs
to match the one in manufacturer data, otherwise set it to 0.

The `manufacturerDataMask` must have the same length of `manufacturerData`.

<br />

| Parameters ||
|---|---|
| `manufacturerId` | `int` <br /> |
| `manufacturerData` | `byte` <br /> |
| `manufacturerDataMask` | `byte` <br /> |

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

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | If the `manufacturerId` is invalid, or `manufacturerData` is null while `manufacturerDataMask` is not, or `manufacturerData` and `manufacturerDataMask` have different length. |

### setManufacturerData

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

```
public ScanFilter.Builder setManufacturerData (int manufacturerId, 
                byte[] manufacturerData)
```

Set filter on on manufacturerData. A negative manufacturerId is considered as invalid id.

<br />

| Parameters ||
|---|---|
| `manufacturerId` | `int` <br /> |
| `manufacturerData` | `byte` <br /> |

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

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

### setServiceData

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

```
public ScanFilter.Builder setServiceData (ParcelUuid serviceDataUuid, 
                byte[] serviceData, 
                byte[] serviceDataMask)
```

Set partial filter on service data. For any bit in the mask, set it to 1 if it needs to
match the one in service data, otherwise set it to 0 to ignore that bit.

The `serviceDataMask` must have the same length of the `serviceData`.

<br />

| Parameters ||
|---|---|
| `serviceDataUuid` | `ParcelUuid` <br /> |
| `serviceData` | `byte` <br /> |
| `serviceDataMask` | `byte` <br /> |

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

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | If `serviceDataUuid` is null or `serviceDataMask` is `null` while `serviceData` is not or `serviceDataMask` and `serviceData` has different length. |

### setServiceData

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

```
public ScanFilter.Builder setServiceData (ParcelUuid serviceDataUuid, 
                byte[] serviceData)
```

Set filtering on service data.

<br />

| Parameters ||
|---|---|
| `serviceDataUuid` | `ParcelUuid` <br /> |
| `serviceData` | `byte` <br /> |

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

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | If `serviceDataUuid` is null. |

### setServiceSolicitationUuid

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

```
public ScanFilter.Builder setServiceSolicitationUuid (ParcelUuid serviceSolicitationUuid, 
                ParcelUuid solicitationUuidMask)
```

Set filter on partial service Solicitation uuid. The `SolicitationUuidMask` is the
bit mask for the `serviceSolicitationUuid`. Set any bit in the mask to 1 to
indicate a match is needed for the bit in `serviceSolicitationUuid`, and 0 to
ignore that bit.

<br />

| Parameters ||
|---|---|
| `serviceSolicitationUuid` | `ParcelUuid`: can only be null if solicitationUuidMask is null. <br /> |
| `solicitationUuidMask` | `ParcelUuid`: can be null or a mask with no restriction. <br /> |

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

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | If `serviceSolicitationUuid` is `null` but `solicitationUuidMask` is not `null`. |

### setServiceSolicitationUuid

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

```
public ScanFilter.Builder setServiceSolicitationUuid (ParcelUuid serviceSolicitationUuid)
```

Set filter on service solicitation uuid.

<br />

| Parameters ||
|---|---|
| `serviceSolicitationUuid` | `ParcelUuid`: This value may be `null`. <br /> |

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

### setServiceUuid

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

```
public ScanFilter.Builder setServiceUuid (ParcelUuid serviceUuid)
```

Set filter on service uuid.

<br />

| Parameters ||
|---|---|
| `serviceUuid` | `ParcelUuid` <br /> |

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

### setServiceUuid

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

```
public ScanFilter.Builder setServiceUuid (ParcelUuid serviceUuid, 
                ParcelUuid uuidMask)
```

Set filter on partial service uuid. The `uuidMask` is the bit mask for the `serviceUuid`. Set any bit in the mask to 1 to indicate a match is needed for the bit in
`serviceUuid`, and 0 to ignore that bit.

<br />

| Parameters ||
|---|---|
| `serviceUuid` | `ParcelUuid` <br /> |
| `uuidMask` | `ParcelUuid` <br /> |

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

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | If `serviceUuid` is `null` but `uuidMask` is not `null`. |