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

# VirtualDisplayConfig.Builder

*** ** * ** ***

` public static final class VirtualDisplayConfig.Builder `   
` extends https://developer.android.com/reference/java/lang/Object ` ` `

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.hardware.display.VirtualDisplayConfig.Builder |

<br />

*** ** * ** ***

A builder for `https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig`.

## Summary

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder#Builder(java.lang.String,%20int,%20int,%20int)(https://developer.android.com/reference/java/lang/String name, int width, int height, int densityDpi) ` Creates a new Builder. |

| ### Public methods ||
|---|---|
| ` https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder` | ` https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder#addDisplayCategory(java.lang.String)(https://developer.android.com/reference/java/lang/String displayCategory) ` Adds a display category. |
| ` https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig` | ` https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder#build()() ` Builds the `https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig` instance. |
| ` https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder` | ` https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder#setBrightnessListener(java.util.concurrent.Executor,%20android.hardware.display.VirtualDisplayConfig.BrightnessListener)(https://developer.android.com/reference/java/util/concurrent/Executor executor, https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.BrightnessListener listener) ` Sets the listener to get notified about changes in the display brightness. |
| ` https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder` | ` https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder#setDefaultBrightness(float)(float brightness) ` Sets the default brightness of the display. |
| ` https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder` | ` https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder#setDimBrightness(float)(float brightness) ` Sets the dim brightness of the display. |
| ` https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder` | ` https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder#setDisplayCategories(java.util.Set<java.lang.String>)(https://developer.android.com/reference/java/util/Set<https://developer.android.com/reference/java/lang/String> displayCategories) ` Sets the display categories. |
| ` https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder` | ` https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder#setFlags(int)(int flags) ` Sets the virtual display flags, a combination of `https://developer.android.com/reference/android/hardware/display/DisplayManager#VIRTUAL_DISPLAY_FLAG_PUBLIC`, `https://developer.android.com/reference/android/hardware/display/DisplayManager#VIRTUAL_DISPLAY_FLAG_PRESENTATION`, `https://developer.android.com/reference/android/hardware/display/DisplayManager#VIRTUAL_DISPLAY_FLAG_SECURE`, `https://developer.android.com/reference/android/hardware/display/DisplayManager#VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY`, or `https://developer.android.com/reference/android/hardware/display/DisplayManager#VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR`. |
| ` https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder` | ` https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder#setRequestedRefreshRate(float)(float requestedRefreshRate) ` Sets the refresh rate of a virtual display in frames per second. |
| ` https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder` | ` https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder#setSurface(android.view.Surface)(https://developer.android.com/reference/android/view/Surface surface) ` Sets the surface to which the content of the virtual display should be rendered. |

### 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 34](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Builder (String name, 
                int width, 
                int height, 
                int densityDpi)
```

Creates a new Builder.

<br />

| Parameters ||
|---|---|
| `name` | `String`: The name of the virtual display, must be non-empty. This value cannot be `null`. <br /> |
| `width` | `int`: The width of the virtual display in pixels. Must be greater than 0. Value is 1 or greater <br /> |
| `height` | `int`: The height of the virtual display in pixels. Must be greater than 0. Value is 1 or greater <br /> |
| `densityDpi` | `int`: The density of the virtual display in dpi. Must be greater than 0. Value is 1 or greater <br /> |

## Public methods

### addDisplayCategory

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

```
public VirtualDisplayConfig.Builder addDisplayCategory (String displayCategory)
```

Adds a display category.

<br />

| Parameters ||
|---|---|
| `displayCategory` | `String`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder` | This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder#setDisplayCategories(java.util.Set<java.lang.String>)`

### build

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

```
public VirtualDisplayConfig build ()
```

Builds the `https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig` instance.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig` | This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if the dim brightness is set to a value greater than the default brightness. |

### setBrightnessListener

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

```
public VirtualDisplayConfig.Builder setBrightnessListener (Executor executor, 
                VirtualDisplayConfig.BrightnessListener listener)
```

Sets the listener to get notified about changes in the display brightness.

<br />

| Parameters ||
|---|---|
| `executor` | `Executor`: The executor where the callback is executed on. This value cannot be `null`. Callback and listener events are dispatched through this `https://developer.android.com/reference/java/util/concurrent/Executor`, providing an easy way to control which thread is used. To dispatch events through the main thread of your application, you can use `https://developer.android.com/reference/android/content/Context#getMainExecutor()`. Otherwise, provide an `https://developer.android.com/reference/java/util/concurrent/Executor` that dispatches to an appropriate thread. <br /> |
| `listener` | `VirtualDisplayConfig.BrightnessListener`: The listener to get notified when the display brightness has changed. This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder` | This value cannot be `null`. <br /> |

### setDefaultBrightness

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

```
public VirtualDisplayConfig.Builder setDefaultBrightness (float brightness)
```

Sets the default brightness of the display.

The system will use this brightness value whenever the display should be bright, i.e. it is powered on and not modified due to user activity or app activity.

Value of `0.0` indicates the minimum supported brightness and value of `1.0` indicates the maximum supported brightness.

If unset, defaults to `0.0`

<br />

<br />

| Parameters ||
|---|---|
| `brightness` | `float`: Value is between 0.0f and 1.0f inclusive <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder` | This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if the brightness is outside the valid range \[0.0, 1.0\] |

**See also:**

- `https://developer.android.com/reference/android/view/View#setKeepScreenOn(boolean)`
- `https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder#setBrightnessListener(java.util.concurrent.Executor,%20android.hardware.display.VirtualDisplayConfig.BrightnessListener)`

### setDimBrightness

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

```
public VirtualDisplayConfig.Builder setDimBrightness (float brightness)
```

Sets the dim brightness of the display.

The system will use this brightness value whenever the display should be dim, i.e. it is powered on and dimmed due to user activity or app activity.

Value of `0.0` indicates the minimum supported brightness and value of `1.0` indicates the maximum supported brightness.

If set, the default brightness must also be set to a value greater or equal to the dim brightness. If unset, defaults to the system default.

<br />

<br />

| Parameters ||
|---|---|
| `brightness` | `float`: Value is between 0.0f and 1.0f inclusive <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder` | This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if the brightness is outside the valid range \[0.0, 1.0\] |

**See also:**

- `https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder#setDefaultBrightness(float)`
- `https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder#setBrightnessListener(java.util.concurrent.Executor,%20android.hardware.display.VirtualDisplayConfig.BrightnessListener)`

### setDisplayCategories

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

```
public VirtualDisplayConfig.Builder setDisplayCategories (Set<String> displayCategories)
```

Sets the display categories.

The categories of the display indicate the type of activities allowed to run on that display. Activities can declare a display category using `https://developer.android.com/reference/android/content/pm/ActivityInfo#requiredDisplayCategory`.

<br />

| Parameters ||
|---|---|
| `displayCategories` | `Set`: This value cannot be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder` | This value cannot be `null`. <br /> |

### setFlags

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

```
public VirtualDisplayConfig.Builder setFlags (int flags)
```

Sets the virtual display flags, a combination of `https://developer.android.com/reference/android/hardware/display/DisplayManager#VIRTUAL_DISPLAY_FLAG_PUBLIC`, `https://developer.android.com/reference/android/hardware/display/DisplayManager#VIRTUAL_DISPLAY_FLAG_PRESENTATION`, `https://developer.android.com/reference/android/hardware/display/DisplayManager#VIRTUAL_DISPLAY_FLAG_SECURE`, `https://developer.android.com/reference/android/hardware/display/DisplayManager#VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY`, or `https://developer.android.com/reference/android/hardware/display/DisplayManager#VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR`.

<br />

| Parameters ||
|---|---|
| `flags` | `int`: Value is either `0` or a combination of the following: - `https://developer.android.com/reference/android/hardware/display/DisplayManager#VIRTUAL_DISPLAY_FLAG_PUBLIC` - `https://developer.android.com/reference/android/hardware/display/DisplayManager#VIRTUAL_DISPLAY_FLAG_PRESENTATION` - `https://developer.android.com/reference/android/hardware/display/DisplayManager#VIRTUAL_DISPLAY_FLAG_SECURE` - `https://developer.android.com/reference/android/hardware/display/DisplayManager#VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY` - `https://developer.android.com/reference/android/hardware/display/DisplayManager#VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder` | This value cannot be `null`. <br /> |

### setRequestedRefreshRate

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

```
public VirtualDisplayConfig.Builder setRequestedRefreshRate (float requestedRefreshRate)
```

Sets the refresh rate of a virtual display in frames per second.

For best results, specify a divisor of the physical refresh rate, e.g., 30 or 60 on a 120hz display. If an arbitrary refresh rate is specified, the rate will be rounded up to a divisor of the physical display. If unset or zero, the virtual display will be refreshed at the physical display refresh rate.

<br />

| Parameters ||
|---|---|
| `requestedRefreshRate` | `float`: Value is 0.0f or greater <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder` | This value cannot be `null`. <br /> |

**See also:**

- `https://developer.android.com/reference/android/view/Display#getRefreshRate()`

### setSurface

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

```
public VirtualDisplayConfig.Builder setSurface (Surface surface)
```

Sets the surface to which the content of the virtual display should be rendered.

The surface can also be set after the display creation using `https://developer.android.com/reference/android/hardware/display/VirtualDisplay#setSurface(android.view.Surface)`.

<br />

| Parameters ||
|---|---|
| `surface` | `Surface`: This value may be `null`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/hardware/display/VirtualDisplayConfig.Builder` | This value cannot be `null`. <br /> |