UseAudioRecorderState
@siteed/expo-audio-studio / UseAudioRecorderState
Interface: UseAudioRecorderState
Defined in: src/ExpoAudioStream.types.ts:498
Properties
analysisData?
optional
analysisData:AudioAnalysis
Defined in: src/ExpoAudioStream.types.ts:558
Analysis data for the recording if processing was enabled
compression?
optional
compression:CompressionInfo
Defined in: src/ExpoAudioStream.types.ts:556
Information about compression if enabled
durationMs
durationMs:
number
Defined in: src/ExpoAudioStream.types.ts:552
Duration of the current recording in milliseconds
isPaused
isPaused:
boolean
Defined in: src/ExpoAudioStream.types.ts:550
Indicates whether recording is in a paused state
isRecording
isRecording:
boolean
Defined in: src/ExpoAudioStream.types.ts:548
Indicates whether recording is currently active
onRecordingInterrupted()?
optional
onRecordingInterrupted: (_
) =>void
Defined in: src/ExpoAudioStream.types.ts:560
Optional callback to handle recording interruptions
Parameters
_
Returns
void
pauseRecording()
pauseRecording: () =>
Promise
<void
>
Defined in: src/ExpoAudioStream.types.ts:544
Pauses the current recording
Returns
Promise
<void
>
prepareRecording()
prepareRecording: (
_
) =>Promise
<void
>
Defined in: src/ExpoAudioStream.types.ts:538
Prepares recording with the specified configuration without starting it.
This method eliminates the latency between calling startRecording and the actual recording beginning. It pre-initializes all audio resources, requests permissions, and sets up audio sessions in advance, allowing for true zero-latency recording start when startRecording is called later.
Technical benefits:
- Eliminates audio pipeline initialization delay (50-300ms depending on platform)
- Pre-allocates audio buffers to avoid memory allocation during recording start
- Initializes audio hardware in advance (particularly important on iOS)
- Requests and verifies permissions before the critical recording moment
Use this method when:
- You need zero-latency recording start (e.g., voice commands, musical applications)
- You're building time-sensitive applications where missing initial audio would be problematic
- You want to prepare resources during app initialization, screen loading, or preceding user interaction
- You need to ensure recording starts reliably and instantly on all platforms
Parameters
_
Returns
Promise
<void
>
A promise that resolves when preparation is complete
Example
// Prepare during component mounting
useEffect(() => {
prepareRecording({
sampleRate: 44100,
channels: 1,
encoding: 'pcm_16bit',
});
}, []);
// Later when user taps record button, it starts with zero latency
const handleRecordPress = () => startRecording({
sampleRate: 44100,
channels: 1,
encoding: 'pcm_16bit',
});
resumeRecording()
resumeRecording: () =>
Promise
<void
>
Defined in: src/ExpoAudioStream.types.ts:546
Resumes a paused recording
Returns
Promise
<void
>
size
size:
number
Defined in: src/ExpoAudioStream.types.ts:554
Size of the recorded audio in bytes
startRecording()
startRecording: (
_
) =>Promise
<StartRecordingResult
>
Defined in: src/ExpoAudioStream.types.ts:540
Starts recording with the specified configuration
Parameters
_
Returns
Promise
<StartRecordingResult
>
stopRecording()
stopRecording: () =>
Promise
<null
|AudioRecording
>
Defined in: src/ExpoAudioStream.types.ts:542
Stops the current recording and returns the recording data
Returns
Promise
<null
| AudioRecording
>