# UserSensor.Builder

Summary:[Ctors](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#pubctors)\|[Methods](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#pubmethods)\|[Inherited Methods](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#inhmethods)\|[\[Expand All\]](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#)  

# UserSensor.Builder

`
public
static


class
UserSensor.Builder
`  
`

extends `[Object](https://developer.android.com/reference/java/lang/Object)`


``


`

|---|----------------------------------------------------------------|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | com.google.android.things.userdriver.sensor.UserSensor.Builder |

<br />

*** ** * ** ***

Builder to allow for flexible[UserSensor](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor)construction.

Most parameters are given default values and can be skipped if not needed. The only required calls are[setDriver(UserSensorDriver)](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#setDriver(com.google.android.things.userdriver.sensor.UserSensorDriver))and either[setType(int)](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#setType(int))or[setCustomType(int, String, int)](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#setCustomType(int, java.lang.String, int)).

See the[Sensor HAL documentation](https://source.android.com/devices/sensors/hal-interface.html#sensor_t)for details on how each parameter is used.

Example usage:  

```
 UserSensor sensor = new UserSensor.Builder()
         .setName("ABC123 Accelerometer")
         .setType(Sensor.TYPE_ACCELEROMETER)
         .setDriver(myDriverObject)
         .build();
 
```

<br />

## Summary

|                                                                   ### Public constructors                                                                    ||
|-----------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| ` `[UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#UserSensor.Builder())`() ` |

|                                                                                                                                                                                                                                                    ### Public methods                                                                                                                                                                                                                                                     ||
|---------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` `[UserSensor](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor)                 | ` `[build](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#build())`() ` Returns a new UserSensor with the configured parameters.                                                                                                                                                                                                 |
| ` `[UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | ` `[setCustomType](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#setCustomType(int, java.lang.String, int))`(int type, `[String](https://developer.android.com/reference/java/lang/String)` stringType, int reportingMode) ` Sets a custom driver type and reporting mode.                                                      |
| ` `[UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | ` `[setDriver](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#setDriver(com.google.android.things.userdriver.sensor.UserSensorDriver))`(`[UserSensorDriver](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensorDriver)` driver) ` Sets the UserSensorDriver that controls the sensor. |
| ` `[UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | ` `[setMaxDelay](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#setMaxDelay(int))`(int maxDelay) ` Sets the maximum allowed delay between sensor reads in microseconds.                                                                                                                                                          |
| ` `[UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | ` `[setMaxRange](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#setMaxRange(float))`(float maxRange) ` Sets the max sensor range.                                                                                                                                                                                                |
| ` `[UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | ` `[setMinDelay](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#setMinDelay(int))`(int minDelay) ` Sets the minimum allowed delay between sensor reads in microseconds.                                                                                                                                                          |
| ` `[UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | ` `[setName](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#setName(java.lang.String))`(`[String](https://developer.android.com/reference/java/lang/String)` name) ` Sets the sensor name.                                                                                                                                       |
| ` `[UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | ` `[setPower](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#setPower(float))`(float power) ` Sets the power cost in milliAmps of enabling the sensor.                                                                                                                                                                           |
| ` `[UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | ` `[setResolution](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#setResolution(float))`(float resolution) ` Sets the sensor resolution.                                                                                                                                                                                         |
| ` `[UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | ` `[setType](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#setType(int))`(int type) ` Sets the driver type.                                                                                                                                                                                                                     |
| ` `[UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | ` `[setUuid](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#setUuid(java.util.UUID))`(`[UUID](https://developer.android.com/reference/java/util/UUID)` uuid) ` Sets a UUID to identify this sensor.                                                                                                                              |
| ` `[UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | ` `[setVendor](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#setVendor(java.lang.String))`(`[String](https://developer.android.com/reference/java/lang/String)` vendor) ` Sets the driver vendor name.                                                                                                                          |
| ` `[UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | ` `[setVersion](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#setVersion(int))`(int version) ` Sets the driver version.                                                                                                                                                                                                         |

| ### Inherited methods |
|-----------------------|---|
| [![](https://developer.android.com/static/assets/images/styles/disclosure_down.png)](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#)From class` `[java.lang.Object](https://developer.android.com/reference/java/lang/Object)` ` |--------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ` `[Object](https://developer.android.com/reference/java/lang/Object)          | ` `[clone](https://developer.android.com/reference/java/lang/Object#clone())`() ` Creates and returns a copy of this object.                                                                                                                                                                                                                                                                                                                                                                      | | ` boolean`                                                                     | ` `[equals](https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object))`(`[Object](https://developer.android.com/reference/java/lang/Object)` obj) ` Indicates whether some other object is "equal to" this one.                                                                                                                                                                                                                                                           | | ` void`                                                                        | ` `[finalize](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 `[Class](https://developer.android.com/reference/java/lang/Class)`<?>` | ` `[getClass](https://developer.android.com/reference/java/lang/Object#getClass())`() ` Returns the runtime class of this`Object`.                                                                                                                                                                                                                                                                                                                                                                | | ` int`                                                                         | ` `[hashCode](https://developer.android.com/reference/java/lang/Object#hashCode())`() ` Returns a hash code value for the object.                                                                                                                                                                                                                                                                                                                                                                 | | ` final void`                                                                  | ` `[notify](https://developer.android.com/reference/java/lang/Object#notify())`() ` Wakes up a single thread that is waiting on this object's monitor.                                                                                                                                                                                                                                                                                                                                            | | ` final void`                                                                  | ` `[notifyAll](https://developer.android.com/reference/java/lang/Object#notifyAll())`() ` Wakes up all threads that are waiting on this object's monitor.                                                                                                                                                                                                                                                                                                                                         | | ` `[String](https://developer.android.com/reference/java/lang/String)          | ` `[toString](https://developer.android.com/reference/java/lang/Object#toString())`() ` Returns a string representation of the object.                                                                                                                                                                                                                                                                                                                                                            | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long, int))`(long millis, int nanos) ` Causes the current thread to wait until another thread invokes the[notify()](https://developer.android.com/reference/java/lang/Object.html#notify())method or the[notifyAll()](https://developer.android.com/reference/java/lang/Object.html#notifyAll())method for this object, or some other thread interrupts the current thread, or a certain amount of real time has elapsed. | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait(long))`(long millis) ` Causes the current thread to wait until either another thread invokes the[notify()](https://developer.android.com/reference/java/lang/Object.html#notify())method or the[notifyAll()](https://developer.android.com/reference/java/lang/Object.html#notifyAll())method for this object, or a specified amount of time has elapsed.                                                                 | | ` final void`                                                                  | ` `[wait](https://developer.android.com/reference/java/lang/Object#wait())`() ` Causes the current thread to wait until another thread invokes the[notify()](https://developer.android.com/reference/java/lang/Object.html#notify())method or the[notifyAll()](https://developer.android.com/reference/java/lang/Object.html#notifyAll())method for this object.                                                                                                                                  | ||

## Public constructors

### UserSensor.Builder

```
UserSensor.Builder ()
```

<br />

<br />

## Public methods

### build

```
UserSensor build ()
```

Returns a new UserSensor with the configured parameters.

<br />

|                                                                                                                  Returns                                                                                                                   ||
|--------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------|
| [UserSensor](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor) | new[UserSensor](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor)object <br /> |

|                                                                                 Throws                                                                                 ||
|--------------------------------------------------------------------------------------------------|----------------------------------------------------------------------|
| [IllegalStateException](https://developer.android.com/reference/java/lang/IllegalStateException) | if invalid parameters were given or required parameters were omitted |

### setCustomType

```
UserSensor.Builder setCustomType (int type, 
                String stringType, 
                int reportingMode)
```

Sets a custom driver type and reporting mode.

This can be used to install a custom driver type that is not currently defined as an Android sensor, e.g. a radiation detector. It's up to the sensor to define what the returned float array represents and the user to interpret these values correctly.

<br />

|                                                                Parameters                                                                ||
|-----------------|-------------------------------------------------------------------------------------------------------------------------|
| `type`          | `int`: sensor type int value, must be greater than or equal to`android.hardware.Sensor.TYPE_DEVICE_PRIVATE_BASE` <br /> |
| `stringType`    | `String`: sensor type description in reverse-domain format e.g.`com.companyname.radiationdetector` <br />               |
| `reportingMode` | `int`:`android.hardware.Sensor.REPORTING_MODE_*`constant <br />                                                         |

|                                                                      Returns                                                                      ||
|------------------------------------------------------------------------------------------------------------------------------|---------------------|
| [UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | this builder <br /> |

|                                                                      Throws                                                                      ||
|--------------------------------------------------------------------------------------------------------|------------------------------------------|
| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException) | if type is invalid or stringType is null |

### setDriver

```
UserSensor.Builder setDriver (UserSensorDriver driver)
```

Sets the UserSensorDriver that controls the sensor.

<br />

|             Parameters              ||
|----------|---------------------------|
| `driver` | `UserSensorDriver` <br /> |

|                                                                      Returns                                                                      ||
|------------------------------------------------------------------------------------------------------------------------------|---------------------|
| [UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | this builder <br /> |

|                                                          Throws                                                           ||
|--------------------------------------------------------------------------------------------------------|-------------------|
| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException) | if driver is null |

### setMaxDelay

```
UserSensor.Builder setMaxDelay (int maxDelay)
```

Sets the maximum allowed delay between sensor reads in microseconds.

<br />

|        Parameters        ||
|------------|--------------|
| `maxDelay` | `int` <br /> |

|                                                                      Returns                                                                      ||
|------------------------------------------------------------------------------------------------------------------------------|---------------------|
| [UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | this builder <br /> |

|                                                                 Throws                                                                 ||
|--------------------------------------------------------------------------------------------------------|--------------------------------|
| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException) | if negative maxDelay was given |

### setMaxRange

```
UserSensor.Builder setMaxRange (float maxRange)
```

Sets the max sensor range.

The sensor should be able to report values without saturating within \[-maxRange, maxRange\] in the sensor's reporting units.

<br />

|                                    Parameters                                    ||
|------------|----------------------------------------------------------------------|
| `maxRange` | `float`: maximum sensor range in the sensor's reporting units <br /> |

|                                                                      Returns                                                                      ||
|------------------------------------------------------------------------------------------------------------------------------|---------------------|
| [UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | this builder <br /> |

|                                                                   Throws                                                                    ||
|--------------------------------------------------------------------------------------------------------|-------------------------------------|
| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException) | if negative or 0 maxRange was given |

**See also:**

- [setResolution(float)](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#setResolution(float))  

### setMinDelay

```
UserSensor.Builder setMinDelay (int minDelay)
```

Sets the minimum allowed delay between sensor reads in microseconds.

Should not be called for one shot sensors ie Sensor.REPORTING_MODE_ONE_SHOT

<br />

|        Parameters        ||
|------------|--------------|
| `minDelay` | `int` <br /> |

|                                                                      Returns                                                                      ||
|------------------------------------------------------------------------------------------------------------------------------|---------------------|
| [UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | this builder <br /> |

|                                                                 Throws                                                                 ||
|--------------------------------------------------------------------------------------------------------|--------------------------------|
| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException) | if negative minDelay was given |

### setName

```
UserSensor.Builder setName (String name)
```

Sets the sensor name. Usually contains the part name and sensor type, e.g. "ABC001 Accelerometer".

<br />

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

|                                                                      Returns                                                                      ||
|------------------------------------------------------------------------------------------------------------------------------|---------------------|
| [UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | this builder <br /> |

|                                                          Throws                                                           ||
|--------------------------------------------------------------------------------------------------------|-------------------|
| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException) | if null was given |

### setPower

```
UserSensor.Builder setPower (float power)
```

Sets the power cost in milliAmps of enabling the sensor.

<br />

|       Parameters        ||
|---------|----------------|
| `power` | `float` <br /> |

|                                                                      Returns                                                                      ||
|------------------------------------------------------------------------------------------------------------------------------|---------------------|
| [UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | this builder <br /> |

|                                                               Throws                                                                ||
|--------------------------------------------------------------------------------------------------------|-----------------------------|
| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException) | if negative power was given |

### setResolution

```
UserSensor.Builder setResolution (float resolution)
```

Sets the sensor resolution.

Sensor resolution is the smallest discernable difference the sensor can measure. Usually calculated based on max range and the number of bits available.

<br />

|                                   Parameters                                    ||
|--------------|-------------------------------------------------------------------|
| `resolution` | `float`: sensor resolution in the sensor's reporting units <br /> |

|                                                                      Returns                                                                      ||
|------------------------------------------------------------------------------------------------------------------------------|---------------------|
| [UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | this builder <br /> |

|                                                                    Throws                                                                     ||
|--------------------------------------------------------------------------------------------------------|---------------------------------------|
| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException) | if negative or 0 resolution was given |

**See also:**

- [setMaxRange(float)](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#setMaxRange(float))  

### setType

```
UserSensor.Builder setType (int type)
```

Sets the driver type.

Use this to set the driver to be a known Android sensor type. For custom sensor types, use[setCustomType(int, String, int)](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder#setCustomType(int, java.lang.String, int))instead.

<br />

|                     Parameters                     ||
|--------|--------------------------------------------|
| `type` | `int`:`android.hardware.Sensor`type <br /> |

|                                                                      Returns                                                                      ||
|------------------------------------------------------------------------------------------------------------------------------|---------------------|
| [UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | this builder <br /> |

|                                                                  Throws                                                                  ||
|--------------------------------------------------------------------------------------------------------|----------------------------------|
| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException) | if the given type is unsupported |

### setUuid

```
UserSensor.Builder setUuid (UUID uuid)
```

Sets a UUID to identify this sensor.

This is only useful when multiple sensors of the exact same type are connected, to be able to distinguish between them. Normally this can be left at the default 0.

Apps will not see this value directly, but can use`android.hardware.Sensor.getId()`to distinguish between sensors with non-zero UUIDs.

<br />

|                            Parameters                            ||
|--------|----------------------------------------------------------|
| `uuid` | `UUID`: UUID to assign this sensor, or null for 0 <br /> |

|                                                                      Returns                                                                      ||
|------------------------------------------------------------------------------------------------------------------------------|---------------------|
| [UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | this builder <br /> |

### setVendor

```
UserSensor.Builder setVendor (String vendor)
```

Sets the driver vendor name.

<br />

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

|                                                                      Returns                                                                      ||
|------------------------------------------------------------------------------------------------------------------------------|---------------------|
| [UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | this builder <br /> |

|                                                          Throws                                                           ||
|--------------------------------------------------------------------------------------------------------|-------------------|
| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException) | if null was given |

### setVersion

```
UserSensor.Builder setVersion (int version)
```

Sets the driver version.

<br />

|       Parameters        ||
|-----------|--------------|
| `version` | `int` <br /> |

|                                                                      Returns                                                                      ||
|------------------------------------------------------------------------------------------------------------------------------|---------------------|
| [UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder) | this builder <br /> |

|                                                          Throws                                                           ||
|--------------------------------------------------------------------------------------------------------|-------------------|
| [IllegalArgumentException](https://developer.android.com/reference/java/lang/IllegalArgumentException) | if null was given |

-

  ## Interfaces

  - [UserSensorDriver](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensorDriver)
-

  ## Classes

  - [UserSensor](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor)
  - [UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder)
  - [UserSensorReading](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensorReading)