# ResolvingDataSource.Resolver

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/ResolvingDataSource.java+class:androidx.media3.datasource.ResolvingDataSource.Resolver)

*** ** * ** ***


```
public interface ResolvingDataSource.Resolver
```

<br />

*** ** * ** ***

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

## Summary

| ### Public methods |
|---|---|
| `abstract https://developer.android.com/reference/androidx/media3/datasource/DataSpec` | `https://developer.android.com/reference/androidx/media3/datasource/ResolvingDataSource.Resolver#resolveDataSpec(androidx.media3.datasource.DataSpec)(https://developer.android.com/reference/androidx/media3/datasource/DataSpec dataSpec)` Resolves a `https://developer.android.com/reference/androidx/media3/datasource/DataSpec` before forwarding it to the wrapped `https://developer.android.com/reference/androidx/media3/datasource/DataSource`. |
| `default https://developer.android.com/reference/android/net/Uri.html` | `https://developer.android.com/reference/androidx/media3/datasource/ResolvingDataSource.Resolver#resolveReportedUri(android.net.Uri)(https://developer.android.com/reference/android/net/Uri.html uri)` Resolves a URI reported by `https://developer.android.com/reference/androidx/media3/datasource/DataSource#getUri()` for event reporting and caching purposes. |

## Public methods

### resolveDataSpec

```
abstract DataSpec resolveDataSpec(DataSpec dataSpec)
```

Resolves a `https://developer.android.com/reference/androidx/media3/datasource/DataSpec` before forwarding it to the wrapped `https://developer.android.com/reference/androidx/media3/datasource/DataSource`. This method is allowed to block until the `https://developer.android.com/reference/androidx/media3/datasource/DataSpec` has been resolved.

Note that this method is called for every new connection, so caching of results is recommended, especially if network operations are involved.

| Parameters |
|---|---|
| `https://developer.android.com/reference/androidx/media3/datasource/DataSpec dataSpec` | The original `https://developer.android.com/reference/androidx/media3/datasource/DataSpec`. |

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

| Throws |
|---|---|
| `https://developer.android.com/reference/java/io/IOException.html` | If an `https://developer.android.com/reference/java/io/IOException.html` occurred while resolving the `https://developer.android.com/reference/androidx/media3/datasource/DataSpec`. |

### resolveReportedUri

```
default Uri resolveReportedUri(Uri uri)
```

Resolves a URI reported by `https://developer.android.com/reference/androidx/media3/datasource/DataSource#getUri()` for event reporting and caching purposes.

Implementations do not need to overwrite this method unless they want to change the reported URI.

This method is *not* allowed to block.

| Parameters |
|---|---|
| `https://developer.android.com/reference/android/net/Uri.html uri` | The URI as reported by `https://developer.android.com/reference/androidx/media3/datasource/DataSource#getUri()`. |

| Returns |
|---|---|
| `https://developer.android.com/reference/android/net/Uri.html` | The resolved URI used for event reporting and caching. |