# ImageReaderSurfaceHolder

Artifact: [androidx.media3:media3-test-utils](https://developer.android.com/jetpack/androidx/releases/media3) [View Source](https://cs.android.com/search?q=file:androidx/media3/test/utils/ImageReaderSurfaceHolder.java+class:androidx.media3.test.utils.ImageReaderSurfaceHolder)

*** ** * ** ***


```
@ExperimentalApi
public final class ImageReaderSurfaceHolder implements SurfaceHolder, AutoCloseable
```

<br />

*** ** * ** ***

An implementation of `https://developer.android.com/reference/android/view/SurfaceHolder.html` which is backed by an `https://developer.android.com/reference/android/media/ImageReader.html`.

## Summary

| ### Public fields |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/android/media/ImageReader.html` | `https://developer.android.com/reference/androidx/media3/test/utils/ImageReaderSurfaceHolder#imageReader()` |

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/test/utils/ImageReaderSurfaceHolder#ImageReaderSurfaceHolder(android.os.Handler)(https://developer.android.com/reference/android/os/Handler.html handler)` |

| ### Public methods |
|---|---|
| `void` | `https://developer.android.com/reference/androidx/media3/test/utils/ImageReaderSurfaceHolder#addCallback(android.view.SurfaceHolder.Callback)(https://developer.android.com/reference/android/view/SurfaceHolder.Callback.html callback)` |
| `void` | `https://developer.android.com/reference/androidx/media3/test/utils/ImageReaderSurfaceHolder#close()()` |
| `void` | `https://developer.android.com/reference/androidx/media3/test/utils/ImageReaderSurfaceHolder#drainSurface()()` Drains the `https://developer.android.com/reference/android/media/ImageReader.html` so more frames can be queued to the `https://developer.android.com/reference/android/view/Surface.html`. |
| `https://developer.android.com/reference/android/view/Surface.html` | `https://developer.android.com/reference/androidx/media3/test/utils/ImageReaderSurfaceHolder#getSurface()()` |
| `https://developer.android.com/reference/android/graphics/Rect.html` | `https://developer.android.com/reference/androidx/media3/test/utils/ImageReaderSurfaceHolder#getSurfaceFrame()()` |
| `boolean` | `https://developer.android.com/reference/androidx/media3/test/utils/ImageReaderSurfaceHolder#isCreating()()` |
| `https://developer.android.com/reference/android/graphics/Canvas.html` | `https://developer.android.com/reference/androidx/media3/test/utils/ImageReaderSurfaceHolder#lockCanvas()()` |
| `https://developer.android.com/reference/android/graphics/Canvas.html` | `https://developer.android.com/reference/androidx/media3/test/utils/ImageReaderSurfaceHolder#lockCanvas(android.graphics.Rect)(https://developer.android.com/reference/android/graphics/Rect.html dirty)` |
| `void` | `https://developer.android.com/reference/androidx/media3/test/utils/ImageReaderSurfaceHolder#removeCallback(android.view.SurfaceHolder.Callback)(https://developer.android.com/reference/android/view/SurfaceHolder.Callback.html callback)` |
| `void` | `https://developer.android.com/reference/androidx/media3/test/utils/ImageReaderSurfaceHolder#setFixedSize(int,int)(int width, int height)` |
| `void` | `https://developer.android.com/reference/androidx/media3/test/utils/ImageReaderSurfaceHolder#setFormat(int)(int format)` |
| `void` | `https://developer.android.com/reference/androidx/media3/test/utils/ImageReaderSurfaceHolder#setKeepScreenOn(boolean)(boolean screenOn)` |
| `void` | `https://developer.android.com/reference/androidx/media3/test/utils/ImageReaderSurfaceHolder#setSizeFromLayout()()` |
| `void` | `https://developer.android.com/reference/androidx/media3/test/utils/ImageReaderSurfaceHolder#setType(int)(int type)` **This method is deprecated.** |
| `void` | `https://developer.android.com/reference/androidx/media3/test/utils/ImageReaderSurfaceHolder#unlockCanvasAndPost(android.graphics.Canvas)(https://developer.android.com/reference/android/graphics/Canvas.html canvas)` |

| ### Inherited Constants |
|---|
| From [android.view.SurfaceHolder](https://developer.android.com/reference/android/view/SurfaceHolder.html) |---|---| | `static final int` | `https://developer.android.com/reference/android/view/SurfaceHolder.html#SURFACE_TYPE_GPU = 2` **This field is deprecated.** | | `static final int` | `https://developer.android.com/reference/android/view/SurfaceHolder.html#SURFACE_TYPE_HARDWARE = 1` **This field is deprecated.** | | `static final int` | `https://developer.android.com/reference/android/view/SurfaceHolder.html#SURFACE_TYPE_NORMAL = 0` **This field is deprecated.** | | `static final int` | `https://developer.android.com/reference/android/view/SurfaceHolder.html#SURFACE_TYPE_PUSH_BUFFERS = 3` **This field is deprecated.** | |

| ### Inherited methods |
|---|
| From [android.view.SurfaceHolder](https://developer.android.com/reference/android/view/SurfaceHolder.html) |---|---| | `https://developer.android.com/reference/android/graphics/Canvas.html` | `https://developer.android.com/reference/android/view/SurfaceHolder.html#lockHardwareCanvas()()` | |

## Public fields

### imageReader

```
public @Nullable ImageReader imageReader
```

## Public constructors

### ImageReaderSurfaceHolder

```
public ImageReaderSurfaceHolder(Handler handler)
```

## Public methods

### addCallback

```
public void addCallback(SurfaceHolder.Callback callback)
```

### close

```
public void close()
```

### drainSurface

```
public void drainSurface()
```

Drains the `https://developer.android.com/reference/android/media/ImageReader.html` so more frames can be queued to the `https://developer.android.com/reference/android/view/Surface.html`.

### getSurface

```
public Surface getSurface()
```

### getSurfaceFrame

```
public Rect getSurfaceFrame()
```

### isCreating

```
public boolean isCreating()
```

### lockCanvas

```
public Canvas lockCanvas()
```

### lockCanvas

```
public Canvas lockCanvas(Rect dirty)
```

### removeCallback

```
public void removeCallback(SurfaceHolder.Callback callback)
```

### setFixedSize

```
public void setFixedSize(int width, int height)
```

### setFormat

```
public void setFormat(int format)
```

### setKeepScreenOn

```
public void setKeepScreenOn(boolean screenOn)
```

### setSizeFromLayout

```
public void setSizeFromLayout()
```

### setType

```
public void setType(int type)
```

> [!CAUTION]
> **This method is deprecated.**   

### unlockCanvasAndPost

```
public void unlockCanvasAndPost(Canvas canvas)
```