Skip to main content

AudioDeviceManager

@siteed/expo-audio-studio


@siteed/expo-audio-studio / AudioDeviceManager

Class: AudioDeviceManager

Defined in: src/AudioDeviceManager.ts:78

Class that provides a cross-platform API for managing audio input devices

EVENT API SPECIFICATION:

Device Events (deviceChangedEvent):

{
type: "deviceConnected" | "deviceDisconnected",
deviceId: string
}

Recording Interruption Events (recordingInterruptedEvent):

{
reason: "userPaused" | "userResumed" | "audioFocusLoss" | "audioFocusGain" |
"deviceFallback" | "deviceSwitchFailed" | "phoneCall" | "phoneCallEnded",
isPaused: boolean,
timestamp: number
}

NOTE: Device events use "type" field, interruption events use "reason" field. This is intentional to distinguish between different event categories.

Constructors

new AudioDeviceManager()

new AudioDeviceManager(options?): AudioDeviceManager

Defined in: src/AudioDeviceManager.ts:96

Parameters

options?
logger?

ConsoleLike

Returns

AudioDeviceManager

Methods

addDeviceChangeListener()

addDeviceChangeListener(listener): () => void

Defined in: src/AudioDeviceManager.ts:337

Register a listener for device changes

Parameters

listener

(devices) => void

Function to call when devices change (receives AudioDevice[])

Returns

Function

Function to remove the listener

Returns

void


cleanup()

cleanup(): void

Defined in: src/AudioDeviceManager.ts:451

Clean up timeouts and listeners (useful for testing or cleanup)

Returns

void


forceRefreshDevices()

forceRefreshDevices(): Promise<AudioDevice[]>

Defined in: src/AudioDeviceManager.ts:478

Force refresh devices without debouncing (for device events)

Returns

Promise<AudioDevice[]>

Promise resolving to the updated device list (AudioDevice[])


getAvailableDevices()

getAvailableDevices(options?): Promise<AudioDevice[]>

Defined in: src/AudioDeviceManager.ts:208

Get all available audio input devices

Parameters

options?

Optional settings to force refresh the device list. Can include a refresh flag.

refresh?

boolean

Returns

Promise<AudioDevice[]>

Promise resolving to an array of audio devices conforming to AudioDevice interface


getCurrentDevice()

getCurrentDevice(): Promise<null | AudioDevice>

Defined in: src/AudioDeviceManager.ts:240

Get the currently selected audio input device

Returns

Promise<null | AudioDevice>

Promise resolving to the current device (conforming to AudioDevice) or null


getLogger()

getLogger(): undefined | ConsoleLike

Defined in: src/AudioDeviceManager.ts:199

Get the current logger instance

Returns

undefined | ConsoleLike

The logger instance or undefined if not set


getRawDevices()

getRawDevices(): AudioDevice[]

Defined in: src/AudioDeviceManager.ts:436

Get the raw device list (including temporarily disconnected devices)

Returns

AudioDevice[]

Array of all available devices from native layer


getTemporarilyDisconnectedDeviceIds()

getTemporarilyDisconnectedDeviceIds(): ReadonlySet<string>

Defined in: src/AudioDeviceManager.ts:444

Get the IDs of temporarily disconnected devices

Returns

ReadonlySet<string>

Set of device IDs that are temporarily hidden from UI


initializeDeviceDetection()

initializeDeviceDetection(): void

Defined in: src/AudioDeviceManager.ts:177

Initialize or reinitialize device detection Useful for restarting device detection if initial setup failed

Returns

void


initWithLogger()

initWithLogger(logger): AudioDeviceManager

Defined in: src/AudioDeviceManager.ts:160

Initialize the device manager with a logger

Parameters

logger

ConsoleLike

A logger instance that implements the ConsoleLike interface

Returns

AudioDeviceManager

The manager instance for chaining


markDeviceAsDisconnected()

markDeviceAsDisconnected(deviceId, notify): void

Defined in: src/AudioDeviceManager.ts:358

Mark a device as temporarily disconnected (for UI filtering)

Parameters

deviceId

string

The ID of the device that was disconnected

notify

boolean = true

Whether to notify listeners immediately (default: true)

Returns

void


markDeviceAsReconnected()

markDeviceAsReconnected(deviceId): void

Defined in: src/AudioDeviceManager.ts:395

Mark a device as reconnected (remove from disconnected set)

Parameters

deviceId

string

The ID of the device that was reconnected

Returns

void


notifyListeners()

notifyListeners(): void

Defined in: src/AudioDeviceManager.ts:781

Notify all registered listeners about device changes.

Returns

void


refreshDevices()

refreshDevices(): Promise<AudioDevice[]>

Defined in: src/AudioDeviceManager.ts:503

Refresh the list of available devices with debouncing and notify listeners.

Returns

Promise<AudioDevice[]>

Promise resolving to the updated device list (AudioDevice[])


resetToDefaultDevice()

resetToDefaultDevice(): Promise<boolean>

Defined in: src/AudioDeviceManager.ts:310

Reset to the default audio input device

Returns

Promise<boolean>

Promise resolving to a boolean indicating success


selectDevice()

selectDevice(deviceId): Promise<boolean>

Defined in: src/AudioDeviceManager.ts:274

Select a specific audio input device for recording

Parameters

deviceId

string

The ID of the device to select

Returns

Promise<boolean>

Promise resolving to a boolean indicating success


setLogger()

setLogger(logger): void

Defined in: src/AudioDeviceManager.ts:169

Set the logger instance

Parameters

logger

ConsoleLike

A logger instance that implements the ConsoleLike interface

Returns

void