# UserSensorDriver

# UserSensorDriver

`
public


interface
UserSensorDriver
`  
`


`

|--------------------------------------------------------------|
| com.google.android.things.userdriver.sensor.UserSensorDriver |

<br />

*** ** * ** ***

Driver to interface with a user-connected sensor. This class is responsible for the actual I/O operations to talk to the sensor. Usage is to pass this to a[UserSensor.Builder](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor.Builder)to create a[UserSensor](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensor).

## Summary

|                                                                                                                                                          ### Public methods                                                                                                                                                           ||
|----------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| ` abstract `[UserSensorReading](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensorReading) | ` `[read](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensorDriver#read())`() ` Reads the sensor.                                                 |
| ` default void`                                                                                                                        | ` `[setEnabled](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensorDriver#setEnabled(boolean))`(boolean enabled) ` Enables or disables the sensor. |

## Public methods

### read

```
UserSensorReading read ()
```

Reads the sensor.

This will be called on a registered sensor when a new reading is needed, and only while the sensor is[enabled](https://developer.android.com/reference/com/google/android/things/userdriver/sensor/UserSensorDriver#setEnabled(boolean)). The implementation may block for a short time while making the necessary calls to communicate with the sensor.

If an exception is thrown, nothing will be reported to the framework and the sensor will be re-read on the next iteration.

<br />

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

|                                            Throws                                            ||
|----------------------------------------------------------------------------|------------------|
| [IOException](https://developer.android.com/reference/java/io/IOException) | if reading fails |

### setEnabled

```
void setEnabled (boolean enabled)
```

Enables or disables the sensor.

If the sensor has a low power/sleep mode, this should be overridden to start sleep on disable and wake up on enable.

If an exception is thrown while enabling, the sensor will remain in disabled mode and will not be polled for readings. Exceptions thrown while disabling are ignored. In both cases, this method may attempt to re-enable in the future.

<br />

|                                Parameters                                ||
|-----------|---------------------------------------------------------------|
| `enabled` | `boolean`:`true`to enable the sensor,`false`to disable <br /> |

|                                                  Throws                                                   ||
|----------------------------------------------------------------------------|-------------------------------|
| [IOException](https://developer.android.com/reference/java/io/IOException) | if sensor configuration fails |

-

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