AudioDeviceManager
@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?
Returns
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
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
A logger instance that implements the ConsoleLike interface
Returns
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
A logger instance that implements the ConsoleLike interface
Returns
void