# AudioRecord.Builder

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

# Builder

*** ** * ** ***

Kotlin\|[Java](https://developer.android.com/reference/android/media/AudioRecord.Builder "View this page in Java")  

```
open class Builder
```

|---|------------------------------------------------------------------------------------------------------------------------|
| [kotlin.Any](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-any/index.html)                                         ||
| ↳ | [android.media.AudioRecord.Builder](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#) |

Builder class for[AudioRecord](https://developer.android.com/reference/kotlin/android/media/AudioRecord)objects. Use this class to configure and create an`AudioRecord`instance. By setting the recording source and audio format parameters, you indicate which of those vary from the default behavior on the device.

Here is an example where`Builder`is used to specify all[AudioFormat](https://developer.android.com/reference/kotlin/android/media/AudioFormat)parameters, to be used by a new`AudioRecord`instance:  

```kotlin
AudioRecord recorder = new AudioRecord.Builder()
          .setAudioSource(MediaRecorder.AudioSource.VOICE_COMMUNICATION)
          .setAudioFormat(new AudioFormat.Builder()
                  .setEncoding(AudioFormat.ENCODING_PCM_16BIT)
                  .setSampleRate(32000)
                  .setChannelMask(AudioFormat.CHANNEL_IN_MONO)
                  .build())
          .setBufferSizeInBytes(2*minBuffSize)
          .build();
  
```

If the audio source is not set with[setAudioSource(int)](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#setAudioSource(kotlin.Int)),[MediaRecorder.AudioSource.DEFAULT](https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource#DEFAULT:kotlin.Int)is used.  
If the audio format is not specified or is incomplete, its channel configuration will be[AudioFormat.CHANNEL_IN_MONO](https://developer.android.com/reference/kotlin/android/media/AudioFormat#CHANNEL_IN_MONO:kotlin.Int), and the encoding will be[AudioFormat.ENCODING_PCM_16BIT](https://developer.android.com/reference/kotlin/android/media/AudioFormat#ENCODING_PCM_16BIT:kotlin.Int). The sample rate will depend on the device actually selected for capture and can be queried with[getSampleRate()](https://developer.android.com/reference/kotlin/android/media/AudioRecord#getSampleRate())method.  
If the buffer size is not specified with[setBufferSizeInBytes(int)](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#setBufferSizeInBytes(kotlin.Int)), the minimum buffer size for the source is used.

## Summary

|                                                                                Public constructors                                                                                ||
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---|
| [Builder](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#Builder())`()` Constructs a new Builder with the default values as described above. |

|                                                                                                                                                                                                                                                                                             Public methods                                                                                                                                                                                                                                                                                              ||
|---------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| open[AudioRecord](https://developer.android.com/reference/kotlin/android/media/AudioRecord)!                  | [build](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#build())`()` <br /> Requires[android.Manifest.permission#RECORD_AUDIO](https://developer.android.com/reference/kotlin/android/Manifest.permission.html#RECORD_AUDIO:kotlin.String)                                                                                                                                                                                                              |
| open[AudioRecord.Builder](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#)! | [setAudioFormat](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#setAudioFormat(android.media.AudioFormat))`(`format:` `[AudioFormat](https://developer.android.com/reference/kotlin/android/media/AudioFormat)`)` Sets the format of the audio data to be captured.                                                                                                                                                                                    |
| open[AudioRecord.Builder](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#)  | [setAudioPlaybackCaptureConfig](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#setAudioPlaybackCaptureConfig(android.media.AudioPlaybackCaptureConfiguration))`(`config:` `[AudioPlaybackCaptureConfiguration](https://developer.android.com/reference/kotlin/android/media/AudioPlaybackCaptureConfiguration)`)` Sets the[AudioRecord](https://developer.android.com/reference/kotlin/android/media/AudioRecord)to record audio played by other apps. |
| open[AudioRecord.Builder](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#)! | [setAudioSource](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#setAudioSource(kotlin.Int))`(`source:` `[Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)`)` <br />                                                                                                                                                                                                                                                           |
| open[AudioRecord.Builder](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#)! | [setBufferSizeInBytes](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#setBufferSizeInBytes(kotlin.Int))`(`bufferSizeInBytes:` `[Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html)`)` Sets the total size (in bytes) of the buffer where audio data is written during the recording.                                                                                                                                            |
| open[AudioRecord.Builder](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#)  | [setContext](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#setContext(android.content.Context))`(`context:` `[Context](https://developer.android.com/reference/kotlin/android/content/Context.html#)`)` Sets the context the record belongs to.                                                                                                                                                                                                       |
| open[AudioRecord.Builder](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#)  | [setPrivacySensitive](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#setPrivacySensitive(kotlin.Boolean))`(`privacySensitive:` `[Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html)`)` Indicates that this capture request is privacy sensitive and that any concurrent capture is not permitted.                                                                                                                       |

## Public constructors

### Builder

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

```
Builder()
```

Constructs a new Builder with the default values as described above.

## Public methods

### build

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

```
open fun build(): AudioRecord!
```

<br />

Requires[android.Manifest.permission#RECORD_AUDIO](https://developer.android.com/reference/kotlin/android/Manifest.permission.html#RECORD_AUDIO:kotlin.String)

|                                                                                                                                Return                                                                                                                                 ||
|------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [AudioRecord](https://developer.android.com/reference/kotlin/android/media/AudioRecord)! | a new[AudioRecord](https://developer.android.com/reference/kotlin/android/media/AudioRecord)instance successfully initialized with all the parameters set on this`Builder`. |

|                                                                                                                     Exceptions                                                                                                                     ||
|-------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `java.lang.UnsupportedOperationException` | if the parameters set on the`Builder`were incompatible, if the parameters are not supported by the device, if the caller does not hold the appropriate permissions, or if the device was not available. |

### setAudioFormat

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

```
open fun setAudioFormat(format: AudioFormat): AudioRecord.Builder!
```

Sets the format of the audio data to be captured.

|                                                                                                 Parameters                                                                                                  ||
|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `format` | [AudioFormat](https://developer.android.com/reference/kotlin/android/media/AudioFormat):a non-null[AudioFormat](https://developer.android.com/reference/kotlin/android/media/AudioFormat)instance |

|                                                                Return                                                                 ||
|-----------------------------------------------------------------------------------------------------------|----------------------------|
| [AudioRecord.Builder](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#)! | the same Builder instance. |

|               Exceptions                ||
|--------------------------------------|---|
| `java.lang.IllegalArgumentException` |   |

### setAudioPlaybackCaptureConfig

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

```
open fun setAudioPlaybackCaptureConfig(config: AudioPlaybackCaptureConfiguration): AudioRecord.Builder
```

Sets the[AudioRecord](https://developer.android.com/reference/kotlin/android/media/AudioRecord)to record audio played by other apps.

|                                                                                                                             Parameters                                                                                                                              ||
|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `config` | [AudioPlaybackCaptureConfiguration](https://developer.android.com/reference/kotlin/android/media/AudioPlaybackCaptureConfiguration):Defines what apps to record audio from (i.e., via either their uid or the type of audio). This value cannot be`null`. |

|                                                                Return                                                                 ||
|----------------------------------------------------------------------------------------------------------|-----------------------------|
| [AudioRecord.Builder](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#) | This value cannot be`null`. |

|                                                                                             Exceptions                                                                                              ||
|-----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `java.lang.IllegalStateException` | if called in conjunction with[setAudioSource(int)](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#setAudioSource(kotlin.Int)). |
| `java.lang.NullPointerException`  | if`config`is null.                                                                                                                                               |

### setAudioSource

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

```
open fun setAudioSource(source: Int): AudioRecord.Builder!
```

|                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       Parameters                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ||
|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `source` | [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html):the audio source. See[MediaRecorder.AudioSource](https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource)for the supported audio source definitions. Value is[android.media.MediaRecorder.AudioSource#DEFAULT](https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource#DEFAULT:kotlin.Int),[android.media.MediaRecorder.AudioSource#MIC](https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource#MIC:kotlin.Int),[android.media.MediaRecorder.AudioSource#VOICE_UPLINK](https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource#VOICE_UPLINK:kotlin.Int),[android.media.MediaRecorder.AudioSource#VOICE_DOWNLINK](https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource#VOICE_DOWNLINK:kotlin.Int),[android.media.MediaRecorder.AudioSource#VOICE_CALL](https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource#VOICE_CALL:kotlin.Int),[android.media.MediaRecorder.AudioSource#CAMCORDER](https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource#CAMCORDER:kotlin.Int),[android.media.MediaRecorder.AudioSource#VOICE_RECOGNITION](https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource#VOICE_RECOGNITION:kotlin.Int),[android.media.MediaRecorder.AudioSource#VOICE_COMMUNICATION](https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource#VOICE_COMMUNICATION:kotlin.Int),[android.media.MediaRecorder.AudioSource#UNPROCESSED](https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource#UNPROCESSED:kotlin.Int), or[android.media.MediaRecorder.AudioSource#VOICE_PERFORMANCE](https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource#VOICE_PERFORMANCE:kotlin.Int) |

|                                                                Return                                                                 ||
|-----------------------------------------------------------------------------------------------------------|----------------------------|
| [AudioRecord.Builder](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#)! | the same Builder instance. |

|               Exceptions                ||
|--------------------------------------|---|
| `java.lang.IllegalArgumentException` |   |

### setBufferSizeInBytes

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

```
open fun setBufferSizeInBytes(bufferSizeInBytes: Int): AudioRecord.Builder!
```

Sets the total size (in bytes) of the buffer where audio data is written during the recording. New audio data can be read from this buffer in smaller chunks than this size. See[getMinBufferSize(int,int,int)](https://developer.android.com/reference/kotlin/android/media/AudioRecord#getMinBufferSize(kotlin.Int,%20kotlin.Int,%20kotlin.Int))to determine the minimum required buffer size for the successful creation of an AudioRecord instance. Since bufferSizeInBytes may be internally increased to accommodate the source requirements, use[getBufferSizeInFrames()](https://developer.android.com/reference/kotlin/android/media/AudioRecord#getBufferSizeInFrames())to determine the actual buffer size in frames.

|                                                           Parameters                                                            ||
|---------------------|------------------------------------------------------------------------------------------------------------|
| `bufferSizeInBytes` | [Int](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-int/index.html):a value strictly greater than 0 |

|                                                                Return                                                                 ||
|-----------------------------------------------------------------------------------------------------------|----------------------------|
| [AudioRecord.Builder](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#)! | the same Builder instance. |

|               Exceptions                ||
|--------------------------------------|---|
| `java.lang.IllegalArgumentException` |   |

### setContext

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

```
open fun setContext(context: Context): AudioRecord.Builder
```

Sets the context the record belongs to. This context will be used to pull information, such as[android.content.AttributionSource](https://developer.android.com/reference/kotlin/android/content/AttributionSource.html#)and device specific session ids, which will be associated with the[AudioRecord](https://developer.android.com/reference/kotlin/android/media/AudioRecord)the AudioRecord. However, the context itself will not be retained by the AudioRecord.

|                                                                                                  Parameters                                                                                                  ||
|-----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `context` | [Context](https://developer.android.com/reference/kotlin/android/content/Context.html#):a non-null[Context](https://developer.android.com/reference/kotlin/android/content/Context.html#)instance |

|                                                                              Return                                                                              ||
|----------------------------------------------------------------------------------------------------------|--------------------------------------------------------|
| [AudioRecord.Builder](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#) | the same Builder instance. This value cannot be`null`. |

### setPrivacySensitive

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

```
open fun setPrivacySensitive(privacySensitive: Boolean): AudioRecord.Builder
```

Indicates that this capture request is privacy sensitive and that any concurrent capture is not permitted.

The default is not privacy sensitive except when the audio source set with[setAudioSource(int)](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#setAudioSource(kotlin.Int))is[MediaRecorder.AudioSource.VOICE_COMMUNICATION](https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource#VOICE_COMMUNICATION:kotlin.Int)or[MediaRecorder.AudioSource.CAMCORDER](https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource#CAMCORDER:kotlin.Int).

Always takes precedence over default from audio source when set explicitly.

Using this API is only permitted when the audio source is one of:

- [MediaRecorder.AudioSource.MIC](https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource#MIC:kotlin.Int)
- [MediaRecorder.AudioSource.CAMCORDER](https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource#CAMCORDER:kotlin.Int)
- [MediaRecorder.AudioSource.VOICE_RECOGNITION](https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource#VOICE_RECOGNITION:kotlin.Int)
- [MediaRecorder.AudioSource.VOICE_COMMUNICATION](https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource#VOICE_COMMUNICATION:kotlin.Int)
- [MediaRecorder.AudioSource.UNPROCESSED](https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource#UNPROCESSED:kotlin.Int)
- [MediaRecorder.AudioSource.VOICE_PERFORMANCE](https://developer.android.com/reference/kotlin/android/media/MediaRecorder.AudioSource#VOICE_PERFORMANCE:kotlin.Int)

Invoking[build()](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#build())will throw an UnsupportedOperationException if this condition is not met.

|                                                                                             Parameters                                                                                             ||
|--------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `privacySensitive` | [Boolean](https://kotlinlang.org/api/latest/jvm/stdlib/kotlin/-boolean/index.html):True if capture from this AudioRecord must be marked as privacy sensitive, false otherwise. |

|                                                                Return                                                                 ||
|----------------------------------------------------------------------------------------------------------|-----------------------------|
| [AudioRecord.Builder](https://developer.android.com/reference/kotlin/android/media/AudioRecord.Builder#) | This value cannot be`null`. |