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

# AudioAttributes.Builder

*** ** * ** ***

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

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | android.media.AudioAttributes.Builder |

<br />

*** ** * ** ***

Builder class for `https://developer.android.com/reference/android/media/AudioAttributes` objects.

Here is an example where `Builder` is used to define the `https://developer.android.com/reference/android/media/AudioAttributes` to be used by a new `AudioTrack` instance:

```
AudioTrack myTrack = new AudioTrack(
        new AudioAttributes.Builder()
            .setUsage(AudioAttributes.USAGE_MEDIA)
            .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
            .build(),
        myFormat, myBuffSize, AudioTrack.MODE_STREAM, mySession);
```

By default all types of information (usage, content type, flags) conveyed by an `AudioAttributes` instance are set to "unknown". Unknown information will be interpreted as a default value that is dependent on the context of use, for instance a `https://developer.android.com/reference/android/media/MediaPlayer` will use a default usage of `https://developer.android.com/reference/android/media/AudioAttributes#USAGE_MEDIA`.

## Summary

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/android/media/AudioAttributes.Builder#Builder()() ` Constructs a new Builder with the defaults. |
| ` https://developer.android.com/reference/android/media/AudioAttributes.Builder#Builder(android.media.AudioAttributes)(https://developer.android.com/reference/android/media/AudioAttributes aa) ` Constructs a new Builder from a given AudioAttributes |

| ### Public methods ||
|---|---|
| ` https://developer.android.com/reference/android/media/AudioAttributes` | ` https://developer.android.com/reference/android/media/AudioAttributes.Builder#build()() ` Combines all of the attributes that have been set and return a new `https://developer.android.com/reference/android/media/AudioAttributes` object. |
| ` https://developer.android.com/reference/android/media/AudioAttributes.Builder` | ` https://developer.android.com/reference/android/media/AudioAttributes.Builder#setAllowedCapturePolicy(int)(int capturePolicy) ` Specifies whether the audio may or may not be captured by other apps or the system. |
| ` https://developer.android.com/reference/android/media/AudioAttributes.Builder` | ` https://developer.android.com/reference/android/media/AudioAttributes.Builder#setContentType(int)(int contentType) ` Sets the attribute describing the content type of the audio signal, such as speech, or music. |
| ` https://developer.android.com/reference/android/media/AudioAttributes.Builder` | ` https://developer.android.com/reference/android/media/AudioAttributes.Builder#setFlags(int)(int flags) ` Sets the combination of flags. |
| ` https://developer.android.com/reference/android/media/AudioAttributes.Builder` | ` https://developer.android.com/reference/android/media/AudioAttributes.Builder#setHapticChannelsMuted(boolean)(boolean muted) ` Specifying if haptic should be muted or not when playing audio-haptic coupled data. |
| ` https://developer.android.com/reference/android/media/AudioAttributes.Builder` | ` https://developer.android.com/reference/android/media/AudioAttributes.Builder#setIsContentSpatialized(boolean)(boolean isSpatialized) ` Specifies whether the content has already been processed for spatialization. |
| ` https://developer.android.com/reference/android/media/AudioAttributes.Builder` | ` https://developer.android.com/reference/android/media/AudioAttributes.Builder#setLegacyStreamType(int)(int streamType) ` Sets attributes as inferred from the legacy stream types. |
| ` https://developer.android.com/reference/android/media/AudioAttributes.Builder` | ` https://developer.android.com/reference/android/media/AudioAttributes.Builder#setSpatializationBehavior(int)(int sb) ` Sets the behavior affecting whether spatialization will be used. |
| ` https://developer.android.com/reference/android/media/AudioAttributes.Builder` | ` https://developer.android.com/reference/android/media/AudioAttributes.Builder#setUsage(int)(int usage) ` Sets the attribute describing what is the intended use of the audio signal, such as alarm or ringtone. |

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

```
public Builder ()
```

Constructs a new Builder with the defaults. By default, usage and content type are respectively `https://developer.android.com/reference/android/media/AudioAttributes#USAGE_UNKNOWN` and `https://developer.android.com/reference/android/media/AudioAttributes#CONTENT_TYPE_UNKNOWN`, and flags are 0. It is recommended to configure the usage (with `https://developer.android.com/reference/android/media/AudioAttributes.Builder#setUsage(int)`) or deriving attributes from a legacy stream type (with `https://developer.android.com/reference/android/media/AudioAttributes.Builder#setLegacyStreamType(int)`) before calling `https://developer.android.com/reference/android/media/AudioAttributes.Builder#build()` to override any default playback behavior in terms of routing and volume management.

<br />

### Builder

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

```
public Builder (AudioAttributes aa)
```

Constructs a new Builder from a given AudioAttributes

<br />

| Parameters ||
|---|---|
| `aa` | `AudioAttributes`: the AudioAttributes object whose data will be reused in the new Builder. <br /> |

## Public methods

### build

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

```
public AudioAttributes build ()
```

Combines all of the attributes that have been set and return a new `https://developer.android.com/reference/android/media/AudioAttributes` object.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/AudioAttributes` | a new `https://developer.android.com/reference/android/media/AudioAttributes` object <br /> |

### setAllowedCapturePolicy

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

```
public AudioAttributes.Builder setAllowedCapturePolicy (int capturePolicy)
```

Specifies whether the audio may or may not be captured by other apps or the system. The default is `https://developer.android.com/reference/android/media/AudioAttributes#ALLOW_CAPTURE_BY_ALL`. There are multiple ways to set this policy:

- for each track independently, with this method
- application-wide at runtime, with `https://developer.android.com/reference/android/media/AudioManager#setAllowedCapturePolicy(int)`
- application-wide at build time, see `allowAudioPlaybackCapture` in the application manifest.

The most restrictive policy is always applied. See `https://developer.android.com/reference/android/media/AudioPlaybackCaptureConfiguration` for more details on which audio signals can be captured.

<br />

<br />

| Parameters ||
|---|---|
| `capturePolicy` | `int`: Value is one of the following: - `https://developer.android.com/reference/android/media/AudioAttributes#ALLOW_CAPTURE_BY_ALL` - `https://developer.android.com/reference/android/media/AudioAttributes#ALLOW_CAPTURE_BY_SYSTEM` - `https://developer.android.com/reference/android/media/AudioAttributes#ALLOW_CAPTURE_BY_NONE` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/AudioAttributes.Builder` | the same Builder instance. This value cannot be `null`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if the argument is not a valid value. |

### setContentType

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

```
public AudioAttributes.Builder setContentType (int contentType)
```

Sets the attribute describing the content type of the audio signal, such as speech, or music.

<br />

| Parameters ||
|---|---|
| `contentType` | `int`: the content type values, one of `https://developer.android.com/reference/android/media/AudioAttributes#CONTENT_TYPE_MOVIE`, `https://developer.android.com/reference/android/media/AudioAttributes#CONTENT_TYPE_MUSIC`, `https://developer.android.com/reference/android/media/AudioAttributes#CONTENT_TYPE_SONIFICATION`, `https://developer.android.com/reference/android/media/AudioAttributes#CONTENT_TYPE_SPEECH`, `https://developer.android.com/reference/android/media/AudioAttributes#CONTENT_TYPE_UNKNOWN`. Value is one of the following: - `https://developer.android.com/reference/android/media/AudioAttributes#CONTENT_TYPE_UNKNOWN` - `https://developer.android.com/reference/android/media/AudioAttributes#CONTENT_TYPE_SPEECH` - `https://developer.android.com/reference/android/media/AudioAttributes#CONTENT_TYPE_MUSIC` - `https://developer.android.com/reference/android/media/AudioAttributes#CONTENT_TYPE_MOVIE` - `https://developer.android.com/reference/android/media/AudioAttributes#CONTENT_TYPE_SONIFICATION` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/AudioAttributes.Builder` | the same Builder instance. <br /> |

### setFlags

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

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

Sets the combination of flags. This is a bitwise OR with the existing flags.

<br />

| Parameters ||
|---|---|
| `flags` | `int`: a combination of `https://developer.android.com/reference/android/media/AudioAttributes#FLAG_AUDIBILITY_ENFORCED`, `https://developer.android.com/reference/android/media/AudioAttributes#FLAG_HW_AV_SYNC`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/AudioAttributes.Builder` | the same Builder instance. <br /> |

### setHapticChannelsMuted

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

```
public AudioAttributes.Builder setHapticChannelsMuted (boolean muted)
```

Specifying if haptic should be muted or not when playing audio-haptic coupled data. By default, haptic channels are disabled.

This will be ignored if the caller doesn't have the `https://developer.android.com/reference/android/Manifest.permission#VIBRATE` permission.

<br />

| Parameters ||
|---|---|
| `muted` | `boolean`: true to force muting haptic channels. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/AudioAttributes.Builder` | the same Builder instance. This value cannot be `null`. <br /> |

### setIsContentSpatialized

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

```
public AudioAttributes.Builder setIsContentSpatialized (boolean isSpatialized)
```

Specifies whether the content has already been processed for spatialization. If it has, setting this to true will prevent issues such as double-processing.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/AudioAttributes.Builder` | the same Builder instance. This value cannot be `null`. <br /> |

### setLegacyStreamType

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

```
public AudioAttributes.Builder setLegacyStreamType (int streamType)
```

Sets attributes as inferred from the legacy stream types. Warning: do not use this method in combination with setting any other attributes such as usage, content type, flags or haptic control, as this method will overwrite (the more accurate) information describing the use case previously set in the `Builder`. In general, avoid using it and prefer setting usage and content type directly with `https://developer.android.com/reference/android/media/AudioAttributes.Builder#setUsage(int)` and `https://developer.android.com/reference/android/media/AudioAttributes.Builder#setContentType(int)`.

Use this method when building an `https://developer.android.com/reference/android/media/AudioAttributes` instance to initialize some of the attributes by information derived from a legacy stream type.

<br />

| Parameters ||
|---|---|
| `streamType` | `int`: one of `https://developer.android.com/reference/android/media/AudioManager#STREAM_VOICE_CALL`, `https://developer.android.com/reference/android/media/AudioManager#STREAM_SYSTEM`, `https://developer.android.com/reference/android/media/AudioManager#STREAM_RING`, `https://developer.android.com/reference/android/media/AudioManager#STREAM_MUSIC`, `https://developer.android.com/reference/android/media/AudioManager#STREAM_ALARM`, or `https://developer.android.com/reference/android/media/AudioManager#STREAM_NOTIFICATION`. <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/AudioAttributes.Builder` | the same Builder instance. <br /> |

### setSpatializationBehavior

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

```
public AudioAttributes.Builder setSpatializationBehavior (int sb)
```

Sets the behavior affecting whether spatialization will be used.

<br />

| Parameters ||
|---|---|
| `sb` | `int`: the spatialization behavior. Value is one of the following: - `https://developer.android.com/reference/android/media/AudioAttributes#SPATIALIZATION_BEHAVIOR_AUTO` - `https://developer.android.com/reference/android/media/AudioAttributes#SPATIALIZATION_BEHAVIOR_NEVER` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/AudioAttributes.Builder` | the same Builder instance. This value cannot be `null`. <br /> |

### setUsage

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

```
public AudioAttributes.Builder setUsage (int usage)
```

Sets the attribute describing what is the intended use of the audio signal, such as alarm or ringtone.

<br />

| Parameters ||
|---|---|
| `usage` | `int`: the usage to set. Value is one of the following: - `https://developer.android.com/reference/android/media/AudioAttributes#USAGE_UNKNOWN` - `https://developer.android.com/reference/android/media/AudioAttributes#USAGE_MEDIA` - `https://developer.android.com/reference/android/media/AudioAttributes#USAGE_VOICE_COMMUNICATION` - `https://developer.android.com/reference/android/media/AudioAttributes#USAGE_VOICE_COMMUNICATION_SIGNALLING` - `https://developer.android.com/reference/android/media/AudioAttributes#USAGE_ALARM` - `https://developer.android.com/reference/android/media/AudioAttributes#USAGE_NOTIFICATION` - `https://developer.android.com/reference/android/media/AudioAttributes#USAGE_NOTIFICATION_RINGTONE` - `https://developer.android.com/reference/android/media/AudioAttributes#USAGE_NOTIFICATION_COMMUNICATION_REQUEST` - `https://developer.android.com/reference/android/media/AudioAttributes#USAGE_NOTIFICATION_COMMUNICATION_INSTANT` - `https://developer.android.com/reference/android/media/AudioAttributes#USAGE_NOTIFICATION_COMMUNICATION_DELAYED` - `https://developer.android.com/reference/android/media/AudioAttributes#USAGE_NOTIFICATION_EVENT` - `https://developer.android.com/reference/android/media/AudioAttributes#USAGE_ASSISTANCE_ACCESSIBILITY` - `https://developer.android.com/reference/android/media/AudioAttributes#USAGE_ASSISTANCE_NAVIGATION_GUIDANCE` - `https://developer.android.com/reference/android/media/AudioAttributes#USAGE_ASSISTANCE_SONIFICATION` - `https://developer.android.com/reference/android/media/AudioAttributes#USAGE_GAME` - `https://developer.android.com/reference/android/media/AudioAttributes#USAGE_ASSISTANT` |

| Returns ||
|---|---|
| `https://developer.android.com/reference/android/media/AudioAttributes.Builder` | the same Builder instance. <br /> |