# DataSpec.Builder

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

*** ** * ** ***


```
public final class DataSpec.Builder
```

<br />

*** ** * ** ***

Builds `https://developer.android.com/reference/androidx/media3/datasource/DataSpec` instances.

Use DataSpec#buildUpon() to obtain a builder representing an existing `https://developer.android.com/reference/androidx/media3/datasource/DataSpec`.

## Summary

| ### Public constructors |
|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder#Builder()()` Creates a new instance with default values. |

| ### Public methods |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec` | `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder#build()()` Builds a `https://developer.android.com/reference/androidx/media3/datasource/DataSpec` with the builder's current values. |
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder#setCustomData(java.lang.Object)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/Object.html customData)` Sets the `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#customData()`. |
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder#setFlags(int)(@https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Flags int flags)` Sets the `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#flags()`. |
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder#setHttpBody(byte[])(@https://developer.android.com/reference/androidx/annotation/Nullable byte[] httpBody)` Sets `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#httpBody()`. |
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder#setHttpMethod(int)(@https://developer.android.com/reference/androidx/media3/datasource/DataSpec.HttpMethod int httpMethod)` Sets `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#httpMethod()`. |
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder#setHttpRequestHeaders(java.util.Map<java.lang.String,java.lang.String>)(https://developer.android.com/reference/java/util/Map.html<https://developer.android.com/reference/java/lang/String.html, https://developer.android.com/reference/java/lang/String.html> httpRequestHeaders)` Sets the `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#httpRequestHeaders()`. |
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder#setKey(java.lang.String)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html key)` Sets the `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#key()`. |
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder#setLength(long)(long length)` Sets the `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#length()`. |
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder#setLocation(java.lang.String)(@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html location)` Sets the `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#location()`. |
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder#setPosition(long)(long position)` Sets the `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#position()`. |
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder#setUri(java.lang.String)(https://developer.android.com/reference/java/lang/String.html uriString)` Sets `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#uri()`. |
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder#setUri(android.net.Uri)(https://developer.android.com/reference/android/net/Uri.html uri)` Sets `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#uri()`. |
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | `@https://checkerframework.org/api/com/google/errorprone/annotations/CanIgnoreReturnValue.html https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder#setUriPositionOffset(long)(long uriPositionOffset)` Sets the `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#uriPositionOffset()`. |

## Public constructors

### Builder

```
public Builder()
```

Creates a new instance with default values.

## Public methods

### build

```
public DataSpec build()
```

Builds a `https://developer.android.com/reference/androidx/media3/datasource/DataSpec` with the builder's current values.

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec` | The build `https://developer.android.com/reference/androidx/media3/datasource/DataSpec`. |

| Throws |
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException.html` | If `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder#setUri(java.lang.String)` has not been called. |

### setCustomData

```
@CanIgnoreReturnValue
public DataSpec.Builder setCustomData(@Nullable Object customData)
```

Sets the `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#customData()`. The default value is `null`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/Object.html customData` | The `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#customData()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | The builder. |

### setFlags

```
@CanIgnoreReturnValue
public DataSpec.Builder setFlags(@DataSpec.Flags int flags)
```

Sets the `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#flags()`. The default value is 0.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Flags int flags` | The `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#flags()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | The builder. |

### setHttpBody

```
@CanIgnoreReturnValue
public DataSpec.Builder setHttpBody(@Nullable byte[] httpBody)
```

Sets `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#httpBody()`. The default value is `null`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable byte[] httpBody` | The `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#httpBody()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | The builder. |

### setHttpMethod

```
@CanIgnoreReturnValue
public DataSpec.Builder setHttpMethod(@DataSpec.HttpMethod int httpMethod)
```

Sets `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#httpMethod()`. The default value is `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#HTTP_METHOD_GET()`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/media3/datasource/DataSpec.HttpMethod int httpMethod` | The `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#httpMethod()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | The builder. |

### setHttpRequestHeaders

```
@CanIgnoreReturnValue
public DataSpec.Builder setHttpRequestHeaders(Map<String, String> httpRequestHeaders)
```

Sets the `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#httpRequestHeaders()`. The default value is an empty map.

Note: `Range`, `Accept-Encoding` and `User-Agent` should not be set with this method, since they are set directly by `https://developer.android.com/reference/androidx/media3/datasource/HttpDataSource` implementations. See `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#httpRequestHeaders()` for more details.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/util/Map.html<https://developer.android.com/reference/java/lang/String.html, https://developer.android.com/reference/java/lang/String.html> httpRequestHeaders` | The `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#httpRequestHeaders()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | The builder. |

### setKey

```
@CanIgnoreReturnValue
public DataSpec.Builder setKey(@Nullable String key)
```

Sets the `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#key()`. The default value is `null`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html key` | The `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#key()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | The builder. |

### setLength

```
@CanIgnoreReturnValue
public DataSpec.Builder setLength(long length)
```

Sets the `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#length()`. The default value is `https://developer.android.com/reference/androidx/media3/common/C#LENGTH_UNSET()`.

| Parameters |
|---|---|
| `long length` | The `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#length()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | The builder. |

### setLocation

```
@CanIgnoreReturnValue
public DataSpec.Builder setLocation(@Nullable String location)
```

Sets the `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#location()`. The default value is `null`.

| Parameters |
|---|---|
| `@https://developer.android.com/reference/androidx/annotation/Nullable https://developer.android.com/reference/java/lang/String.html location` | The `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#location()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | The builder. |

### setPosition

```
@CanIgnoreReturnValue
public DataSpec.Builder setPosition(long position)
```

Sets the `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#position()`. The default value is 0.

| Parameters |
|---|---|
| `long position` | The `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#position()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | The builder. |

### setUri

```
@CanIgnoreReturnValue
public DataSpec.Builder setUri(String uriString)
```

Sets `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#uri()`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/java/lang/String.html uriString` | The `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#uri()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | The builder. |

### setUri

```
@CanIgnoreReturnValue
public DataSpec.Builder setUri(Uri uri)
```

Sets `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#uri()`.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/net/Uri.html uri` | The `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#uri()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | The builder. |

### setUriPositionOffset

```
@CanIgnoreReturnValue
public DataSpec.Builder setUriPositionOffset(long uriPositionOffset)
```

Sets the `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#uriPositionOffset()`. The default value is 0.

| Parameters |
|---|---|
| `long uriPositionOffset` | The `https://developer.android.com/reference/androidx/media3/datasource/DataSpec#uriPositionOffset()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec.Builder` | The builder. |